cpp_quote("/**")
cpp_quote(" * This file is part of the mingw-w64 runtime package.")
cpp_quote(" * No warranty is given; refer to the file DISCLAIMER within this package.")
cpp_quote(" */")
cpp_quote("")

#include <mshtmdid.h>
#include <mshtmcid.h>
#include <olectl.h>

import "ocidl.idl";
import "dimm.idl";
import "shtypes.idl";
import "dispex.idl";

cpp_quote("#include <winapifamily.h>")
cpp_quote("")
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
cpp_quote("#include <dxgitype.h>")
cpp_quote("#include <olectl.h>")
cpp_quote("")
cpp_quote("EXTERN_C const GUID CMDSETID_Forms3;")
cpp_quote("EXTERN_C const GUID CLSID_MHTMLDocument;")
cpp_quote("EXTERN_C const GUID CLSID_IEXMLDocument;")
cpp_quote("EXTERN_C const GUID CLSID_SVGDocument;")
cpp_quote("EXTERN_C const GUID CLSID_XHTMLDocument;")
cpp_quote("EXTERN_C const GUID CLSID_HTADocument;")
cpp_quote("EXTERN_C const GUID CLSID_HTMLApplication;")
cpp_quote("EXTERN_C const GUID CLSID_HTMLPluginDocument;")
cpp_quote("EXTERN_C const GUID CLSID_CStyle;")
cpp_quote("")
cpp_quote("DEFINE_GUID(SID_SEditCommandTarget,0x3050f4b5,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b);")
cpp_quote("DEFINE_GUID(CGID_EditStateCommands,0x3050f4b6,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b);")
cpp_quote("DEFINE_GUID(SID_SHTMLEditHost,0x3050f6a0,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b);")
cpp_quote("DEFINE_GUID(SID_SHTMLEditServices,0x3050f7f9,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b);")
cpp_quote("")
cpp_quote("#define SID_SHTMLWindow IID_IHTMLWindow2")
cpp_quote("#define SID_SElementBehaviorFactory IID_IElementBehaviorFactory")
cpp_quote("#define SID_STrackingProtection IID_ITrackingProtection")
cpp_quote("")
cpp_quote("#define COOKIEACTION_NONE 0x0")
cpp_quote("#define COOKIEACTION_ACCEPT 0x1")
cpp_quote("#define COOKIEACTION_REJECT 0x2")
cpp_quote("#define COOKIEACTION_DOWNGRADE 0x4")
cpp_quote("#define COOKIEACTION_LEASH 0x8")
cpp_quote("#define COOKIEACTION_SUPPRESS 0x10")
cpp_quote("#define COOKIEACTION_READ 0x20")
cpp_quote("")
cpp_quote("#define PRIVACY_URLISTOPLEVEL 0x10000")
cpp_quote("#define PRIVACY_URLHASCOMPACTPOLICY 0x20000")
cpp_quote("#define PRIVACY_URLHASPOSTDATA 0x80000")
cpp_quote("#define PRIVACY_URLHASPOLICYREFLINK 0x100000")
cpp_quote("#define PRIVACY_URLHASPOLICYREFHEADER 0x200000")
cpp_quote("#define PRIVACY_URLHASP3PHEADER 0x400000")
cpp_quote("")
cpp_quote("#define DEBUGCALLBACKNOTIFICATION_TIMEOUT 0x1")
cpp_quote("#define DEBUGCALLBACKNOTIFICATION_INTERVAL 0x2")
cpp_quote("#define DEBUGCALLBACKNOTIFICATION_IMMEDIATE 0x4")
cpp_quote("#define DEBUGCALLBACKNOTIFICATION_ANIMATIONFRAME 0x8")
cpp_quote("#define DEBUGCALLBACKNOTIFICATION_DOMEVENT 0x10")
cpp_quote("")
cpp_quote("#define DEBUGDOMEVENTPROPAGATIONSTATUS_DEFAULTCANCELED 0x1")
cpp_quote("#define DEBUGDOMEVENTPROPAGATIONSTATUS_STOPIMMEDIATEPROPAGATION 0x2")
cpp_quote("#define DEBUGDOMEVENTPROPAGATIONSTATUS_STOPPROPAGATION 0x4")
cpp_quote("")

[odl, oleautomation, dual, uuid (3050f3ee-98b5-11cf-bb82-00aa00bdce0b)]
interface IHTMLFiltersCollection : IDispatch {
  [id (DISPID_IHTMLFILTERSCOLLECTION_LENGTH), propget] HRESULT length ([retval, out] long *p);
  [id (DISPID_IHTMLFILTERSCOLLECTION__NEWENUM), propget, hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
  [id (DISPID_IHTMLFILTERSCOLLECTION_ITEM)] HRESULT item ([in] VARIANT *pvarIndex,[retval, out] VARIANT *pvarResult);
};

[odl, oleautomation, dual, uuid (3051046b-98b5-11cf-bb82-00aa00bdce0b)]
interface IIE70DispatchEx : IDispatchEx {
};

[odl, oleautomation, dual, uuid (3051046c-98b5-11cf-bb82-00aa00bdce0b)]
interface IIE80DispatchEx : IDispatchEx {
};

[uuid (3050f1c5-98b5-11cf-bb82-00aa00bdce0b), lcid (0x0000), version (4.00)]
library MSHTML {
  importlib ("stdole2.tlb");
  import "ocidl.idl";
  import "dxgitype.idl";

  interface IDOMEvent;
  interface IElementBehavior;
  interface IElementBehaviorFactory;
  interface IElementBehaviorRender;
  interface IElementBehaviorSite;
  interface IElementBehaviorSiteOM;
  interface IElementBehaviorSiteRender;
  interface IHTMLEventObj;
  interface IHTMLStyleSheetRule;

  typedef enum _htmlBlockAlign {
    htmlBlockAlignNotSet = 0,
    htmlBlockAlignLeft = 1,
    htmlBlockAlignCenter = 2,
    htmlBlockAlignRight = 3,
    htmlBlockAlignJustify = 4,
    htmlBlockAlign_Max = 0x7FFFFFFF
  } htmlBlockAlign;

  typedef enum _htmlClear {
    htmlClearNotSet = 0,
    htmlClearAll = 1,
    htmlClearLeft = 2,
    htmlClearRight = 3,
    htmlClearBoth = 4,
    htmlClearNone = 5,
    htmlClear_Max = 0x7FFFFFFF
  } htmlClear;

  typedef enum _htmlControlAlign {
    htmlControlAlignNotSet = 0,
    htmlControlAlignLeft = 1,
    htmlControlAlignCenter = 2,
    htmlControlAlignRight = 3,
    htmlControlAlignTextTop = 4,
    htmlControlAlignAbsMiddle = 5,
    htmlControlAlignBaseline = 6,
    htmlControlAlignAbsBottom = 7,
    htmlControlAlignBottom = 8,
    htmlControlAlignMiddle = 9,
    htmlControlAlignTop = 10,
    htmlControlAlign_Max = 0x7FFFFFFF
  } htmlControlAlign;

  typedef enum _htmlDesignMode {
    htmlDesignModeInherit = -2,
    htmlDesignModeOn = -1,
    htmlDesignModeOff = 0,
    htmlDesignMode_Max = 0x7FFFFFFF
  } htmlDesignMode;

  typedef enum _htmlReadyState {
    htmlReadyStateuninitialized = 0,
    htmlReadyStateloading = 1,
    htmlReadyStateloaded = 2,
    htmlReadyStateinteractive = 3,
    htmlReadyStatecomplete = 4,
    htmlReadyState_Max = 0x7FFFFFFF
  } htmlReadyState;

  typedef enum _htmlZOrder {
    htmlZOrderFront = 0,
    htmlZOrderBack = 1,
    htmlZOrder_Max = 0x7FFFFFFF
  } htmlZOrder;

  typedef enum _htmlLoop {
    htmlLoopLoopInfinite = -1,
    htmlLoop_Max = 0x7FFFFFFF
  } htmlLoop;

  typedef enum _mediaType {
    mediaTypeNotSet = 0,
    mediaTypeAll = 511,
    mediaTypeAural = 1,
    mediaTypeBraille = 2,
    mediaTypeEmbossed = 4,
    mediaTypeHandheld = 8,
    mediaTypePrint = 16,
    mediaTypeProjection = 32,
    mediaTypeScreen = 64,
    mediaTypeTty = 128,
    mediaTypeTv = 256,
    mediaType_Max = 0x7FFFFFFF
  } mediaType;

  typedef enum _DomConstructor {
    DomConstructorObject = 0,
    DomConstructorAttr = 1,
    DomConstructorBehaviorUrnsCollection = 2,
    DomConstructorBookmarkCollection = 3,
    DomConstructorCompatibleInfo = 4,
    DomConstructorCompatibleInfoCollection = 5,
    DomConstructorControlRangeCollection = 6,
    DomConstructorCSSCurrentStyleDeclaration = 7,
    DomConstructorCSSRuleList = 8,
    DomConstructorCSSRuleStyleDeclaration = 9,
    DomConstructorCSSStyleDeclaration = 10,
    DomConstructorCSSStyleRule = 11,
    DomConstructorCSSStyleSheet = 12,
    DomConstructorDataTransfer = 13,
    DomConstructorDOMImplementation = 14,
    DomConstructorElement = 15,
    DomConstructorEvent = 16,
    DomConstructorHistory = 17,
    DomConstructorHTCElementBehaviorDefaults = 18,
    DomConstructorHTMLAnchorElement = 19,
    DomConstructorHTMLAreaElement = 20,
    DomConstructorHTMLAreasCollection = 21,
    DomConstructorHTMLBaseElement = 22,
    DomConstructorHTMLBaseFontElement = 23,
    DomConstructorHTMLBGSoundElement = 24,
    DomConstructorHTMLBlockElement = 25,
    DomConstructorHTMLBodyElement = 26,
    DomConstructorHTMLBRElement = 27,
    DomConstructorHTMLButtonElement = 28,
    DomConstructorHTMLCollection = 29,
    DomConstructorHTMLCommentElement = 30,
    DomConstructorHTMLDDElement = 31,
    DomConstructorHTMLDivElement = 32,
    DomConstructorHTMLDocument = 33,
    DomConstructorHTMLDListElement = 34,
    DomConstructorHTMLDTElement = 35,
    DomConstructorHTMLEmbedElement = 36,
    DomConstructorHTMLFieldSetElement = 37,
    DomConstructorHTMLFontElement = 38,
    DomConstructorHTMLFormElement = 39,
    DomConstructorHTMLFrameElement = 40,
    DomConstructorHTMLFrameSetElement = 41,
    DomConstructorHTMLGenericElement = 42,
    DomConstructorHTMLHeadElement = 43,
    DomConstructorHTMLHeadingElement = 44,
    DomConstructorHTMLHRElement = 45,
    DomConstructorHTMLHtmlElement = 46,
    DomConstructorHTMLIFrameElement = 47,
    DomConstructorHTMLImageElement = 48,
    DomConstructorHTMLInputElement = 49,
    DomConstructorHTMLIsIndexElement = 50,
    DomConstructorHTMLLabelElement = 51,
    DomConstructorHTMLLegendElement = 52,
    DomConstructorHTMLLIElement = 53,
    DomConstructorHTMLLinkElement = 54,
    DomConstructorHTMLMapElement = 55,
    DomConstructorHTMLMarqueeElement = 56,
    DomConstructorHTMLMetaElement = 57,
    DomConstructorHTMLModelessDialog = 58,
    DomConstructorHTMLNamespaceInfo = 59,
    DomConstructorHTMLNamespaceInfoCollection = 60,
    DomConstructorHTMLNextIdElement = 61,
    DomConstructorHTMLNoShowElement = 62,
    DomConstructorHTMLObjectElement = 63,
    DomConstructorHTMLOListElement = 64,
    DomConstructorHTMLOptionElement = 65,
    DomConstructorHTMLParagraphElement = 66,
    DomConstructorHTMLParamElement = 67,
    DomConstructorHTMLPhraseElement = 68,
    DomConstructorHTMLPluginsCollection = 69,
    DomConstructorHTMLPopup = 70,
    DomConstructorHTMLScriptElement = 71,
    DomConstructorHTMLSelectElement = 72,
    DomConstructorHTMLSpanElement = 73,
    DomConstructorHTMLStyleElement = 74,
    DomConstructorHTMLTableCaptionElement = 75,
    DomConstructorHTMLTableCellElement = 76,
    DomConstructorHTMLTableColElement = 77,
    DomConstructorHTMLTableElement = 78,
    DomConstructorHTMLTableRowElement = 79,
    DomConstructorHTMLTableSectionElement = 80,
    DomConstructorHTMLTextAreaElement = 81,
    DomConstructorHTMLTextElement = 82,
    DomConstructorHTMLTitleElement = 83,
    DomConstructorHTMLUListElement = 84,
    DomConstructorHTMLUnknownElement = 85,
    DomConstructorImage = 86,
    DomConstructorLocation = 87,
    DomConstructorNamedNodeMap = 88,
    DomConstructorNavigator = 89,
    DomConstructorNodeList = 90,
    DomConstructorOption = 91,
    DomConstructorScreen = 92,
    DomConstructorSelection = 93,
    DomConstructorStaticNodeList = 94,
    DomConstructorStorage = 95,
    DomConstructorStyleSheetList = 96,
    DomConstructorStyleSheetPage = 97,
    DomConstructorStyleSheetPageList = 98,
    DomConstructorText = 99,
    DomConstructorTextRange = 100,
    DomConstructorTextRangeCollection = 101,
    DomConstructorTextRectangle = 102,
    DomConstructorTextRectangleList = 103,
    DomConstructorWindow = 104,
    DomConstructorXDomainRequest = 105,
    DomConstructorXMLHttpRequest = 106,
    DomConstructorMax = 107,
    DomConstructor_Max = 0x7FFFFFFF
  } DomConstructor;

  typedef enum _styleBackgroundAttachment {
    styleBackgroundAttachmentFixed = 0,
    styleBackgroundAttachmentScroll = 1,
    styleBackgroundAttachmentNotSet = 2,
    styleBackgroundAttachment_Max = 0x7FFFFFFF
  } styleBackgroundAttachment;

  typedef enum _styleBackgroundAttachment3 {
    styleBackgroundAttachment3Fixed = 0,
    styleBackgroundAttachment3Scroll = 1,
    styleBackgroundAttachment3Local = 2,
    styleBackgroundAttachment3NotSet = 3,
    styleBackgroundAttachment3_Max = 0x7FFFFFFF
  } styleBackgroundAttachment3;

  typedef enum _styleBackgroundClip {
    styleBackgroundClipBorderBox = 0,
    styleBackgroundClipPaddingBox = 1,
    styleBackgroundClipContentBox = 2,
    styleBackgroundClipNotSet = 3,
    styleBackgroundClip_Max = 0x7FFFFFFF
  } styleBackgroundClip;

  typedef enum _styleBackgroundOrigin {
    styleBackgroundOriginBorderBox = 0,
    styleBackgroundOriginPaddingBox = 1,
    styleBackgroundOriginContentBox = 2,
    styleBackgroundOriginNotSet = 3,
    styleBackgroundOrigin_Max = 0x7FFFFFFF
  } styleBackgroundOrigin;

  typedef enum _styleBackgroundRepeat {
    styleBackgroundRepeatRepeat = 0,
    styleBackgroundRepeatRepeatX = 1,
    styleBackgroundRepeatRepeatY = 2,
    styleBackgroundRepeatNoRepeat = 3,
    styleBackgroundRepeatNotSet = 4,
    styleBackgroundRepeat_Max = 0x7FFFFFFF
  } styleBackgroundRepeat;

  typedef enum _styleBorderCollapse {
    styleBorderCollapseNotSet = 0,
    styleBorderCollapseSeparate = 1,
    styleBorderCollapseCollapse = 2,
    styleBorderCollapse_Max = 0x7FFFFFFF
  } styleBorderCollapse;

  typedef enum _styleCaptionSide {
    styleCaptionSideNotSet = 0,
    styleCaptionSideTop = 1,
    styleCaptionSideBottom = 2,
    styleCaptionSideLeft = 3,
    styleCaptionSideRight = 4,
    styleCaptionSide_Max = 0x7FFFFFFF
  } styleCaptionSide;

  typedef enum _styleDataRepeat {
    styleDataRepeatNone = 0,
    styleDataRepeatInner = 1,
    styleDataRepeat_Max = 0x7FFFFFFF
  } styleDataRepeat;

  typedef enum _styleEmptyCells {
    styleEmptyCellsNotSet = 0,
    styleEmptyCellsShow = 1,
    styleEmptyCellsHide = 2,
    styleEmptyCells_Max = 0x7FFFFFFF
  } styleEmptyCells;

  typedef enum _styleFontStyle {
    styleFontStyleNotSet = 0,
    styleFontStyleItalic = 1,
    styleFontStyleOblique = 2,
    styleFontStyleNormal = 3,
    styleFontStyle_Max = 0x7FFFFFFF
  } styleFontStyle;

  typedef enum _styleFontVariant {
    styleFontVariantNotSet = 0,
    styleFontVariantSmallCaps = 1,
    styleFontVariantNormal = 2,
    styleFontVariant_Max = 0x7FFFFFFF
  } styleFontVariant;

  typedef enum _styleFontSize {
    styleFontSizeXXSmall = 0,
    styleFontSizeXSmall = 1,
    styleFontSizeSmall = 2,
    styleFontSizeMedium = 3,
    styleFontSizeLarge = 4,
    styleFontSizeXLarge = 5,
    styleFontSizeXXLarge = 6,
    styleFontSizeSmaller = 7,
    styleFontSizeLarger = 8,
    styleFontSize_Max = 0x7FFFFFFF
  } styleFontSize;

  typedef enum _styleFontWeight {
    styleFontWeightNotSet = 0,
    styleFontWeight100 = 1,
    styleFontWeight200 = 2,
    styleFontWeight300 = 3,
    styleFontWeight400 = 4,
    styleFontWeight500 = 5,
    styleFontWeight600 = 6,
    styleFontWeight700 = 7,
    styleFontWeight800 = 8,
    styleFontWeight900 = 9,
    styleFontWeightNormal = 10,
    styleFontWeightBold = 11,
    styleFontWeightBolder = 12,
    styleFontWeightLighter = 13,
    styleFontWeight_Max = 0x7FFFFFFF
  } styleFontWeight;

  typedef enum _styleMsOverflowStyle {
    styleMsOverflowStyleNotSet = 0,
    styleMsOverflowStyleAuto = 1,
    styleMsOverflowStyleNone = 2,
    styleMsOverflowStyleScrollbar = 3,
    styleMsOverflowStyleMsAutoHidingScrollbar = 4,
    styleMsOverflowStyle_Max = 0x7FFFFFFF
  } styleMsOverflowStyle;

  typedef enum _styleOverflow {
    styleOverflowNotSet = 0,
    styleOverflowAuto = 1,
    styleOverflowHidden = 2,
    styleOverflowVisible = 3,
    styleOverflowScroll = 4,
    styleOverflow_Max = 0x7FFFFFFF
  } styleOverflow;

  typedef enum _styleTableLayout {
    styleTableLayoutNotSet = 0,
    styleTableLayoutAuto = 1,
    styleTableLayoutFixed = 2,
    styleTableLayout_Max = 0x7FFFFFFF
  } styleTableLayout;

  typedef enum _styleTextTransform {
    styleTextTransformNotSet = 0,
    styleTextTransformCapitalize = 1,
    styleTextTransformLowercase = 2,
    styleTextTransformUppercase = 3,
    styleTextTransformNone = 4,
    styleTextTransform_Max = 0x7FFFFFFF
  } styleTextTransform;

  typedef enum _styleVerticalAlign {
    styleVerticalAlignAuto = 0,
    styleVerticalAlignBaseline = 1,
    styleVerticalAlignSub = 2,
    styleVerticalAlignSuper = 3,
    styleVerticalAlignTop = 4,
    styleVerticalAlignTextTop = 5,
    styleVerticalAlignMiddle = 6,
    styleVerticalAlignBottom = 7,
    styleVerticalAlignTextBottom = 8,
    styleVerticalAlignInherit = 9,
    styleVerticalAlignNotSet = 10,
    styleVerticalAlign_Max = 0x7FFFFFFF
  } styleVerticalAlign;

  typedef enum _styleWidowsOrphans {
    styleWidowsOrphansNotSet = -2147483647,
    styleWidowsOrphans_Max = 0x7FFFFFFF
  } styleWidowsOrphans;

  typedef enum _styleZIndex {
    styleZIndexAuto = -2147483647,
    styleZIndex_Max = 0x7FFFFFFF
  } styleZIndex;

  typedef enum _styleAuto {
    styleAutoAuto = 0,
    styleAuto_Max = 0x7FFFFFFF
  } styleAuto;

  typedef enum _styleNone {
    styleNoneNone = 0,
    styleNone_Max = 0x7FFFFFFF
  } styleNone;

  typedef enum _styleNormal {
    styleNormalNormal = 0,
    styleNormal_Max = 0x7FFFFFFF
  } styleNormal;

  typedef enum _styleBorderWidth {
    styleBorderWidthThin = 0,
    styleBorderWidthMedium = 1,
    styleBorderWidthThick = 2,
    styleBorderWidth_Max = 0x7FFFFFFF
  } styleBorderWidth;

  typedef enum _stylePosition {
    stylePositionNotSet = 0,
    stylePositionstatic = 1,
    stylePositionrelative = 2,
    stylePositionabsolute = 3,
    stylePositionfixed = 4,
    stylePositionMsPage = 5,
    stylePosition_Max = 0x7FFFFFFF
  } stylePosition;

  typedef enum _styleBorderStyle {
    styleBorderStyleNotSet = 0,
    styleBorderStyleDotted = 1,
    styleBorderStyleDashed = 2,
    styleBorderStyleSolid = 3,
    styleBorderStyleDouble = 4,
    styleBorderStyleGroove = 5,
    styleBorderStyleRidge = 6,
    styleBorderStyleInset = 7,
    styleBorderStyleOutset = 8,
    styleBorderStyleWindowInset = 9,
    styleBorderStyleNone = 10,
    styleBorderStyleHidden = 11,
    styleBorderStyle_Max = 0x7FFFFFFF
  } styleBorderStyle;

  typedef enum _styleOutlineStyle {
    styleOutlineStyleNotSet = 0,
    styleOutlineStyleDotted = 1,
    styleOutlineStyleDashed = 2,
    styleOutlineStyleSolid = 3,
    styleOutlineStyleDouble = 4,
    styleOutlineStyleGroove = 5,
    styleOutlineStyleRidge = 6,
    styleOutlineStyleInset = 7,
    styleOutlineStyleOutset = 8,
    styleOutlineStyleWindowInset = 9,
    styleOutlineStyleNone = 10,
    styleOutlineStyle_Max = 0x7FFFFFFF
  } styleOutlineStyle;

  typedef enum _styleStyleFloat {
    styleStyleFloatNotSet = 0,
    styleStyleFloatLeft = 1,
    styleStyleFloatRight = 2,
    styleStyleFloatNone = 3,
    styleStyleFloat_Max = 0x7FFFFFFF
  } styleStyleFloat;

  typedef enum _styleDisplay {
    styleDisplayNotSet = 0,
    styleDisplayBlock = 1,
    styleDisplayInline = 2,
    styleDisplayListItem = 3,
    styleDisplayNone = 4,
    styleDisplayTableHeaderGroup = 5,
    styleDisplayTableFooterGroup = 6,
    styleDisplayInlineBlock = 7,
    styleDisplayTable = 8,
    styleDisplayInlineTable = 9,
    styleDisplayTableRow = 10,
    styleDisplayTableRowGroup = 11,
    styleDisplayTableColumn = 12,
    styleDisplayTableColumnGroup = 13,
    styleDisplayTableCell = 14,
    styleDisplayTableCaption = 15,
    styleDisplayRunIn = 16,
    styleDisplayRuby = 17,
    styleDisplayRubyBase = 18,
    styleDisplayRubyText = 19,
    styleDisplayRubyBaseContainer = 20,
    styleDisplayRubyTextContainer = 21,
    styleDisplayMsFlexbox = 22,
    styleDisplayMsInlineFlexbox = 23,
    styleDisplayMsGrid = 24,
    styleDisplayMsInlineGrid = 25,
    styleDisplay_Max = 0x7FFFFFFF
  } styleDisplay;

  typedef enum _styleVisibility {
    styleVisibilityNotSet = 0,
    styleVisibilityInherit = 1,
    styleVisibilityVisible = 2,
    styleVisibilityHidden = 3,
    styleVisibilityCollapse = 4,
    styleVisibility_Max = 0x7FFFFFFF
  } styleVisibility;

  typedef enum _styleListStyleType {
    styleListStyleTypeNotSet = 0,
    styleListStyleTypeDisc = 1,
    styleListStyleTypeCircle = 2,
    styleListStyleTypeSquare = 3,
    styleListStyleTypeDecimal = 4,
    styleListStyleTypeLowerRoman = 5,
    styleListStyleTypeUpperRoman = 6,
    styleListStyleTypeLowerAlpha = 7,
    styleListStyleTypeUpperAlpha = 8,
    styleListStyleTypeNone = 9,
    styleListStyleTypeDecimalLeadingZero = 10,
    styleListStyleTypeGeorgian = 11,
    styleListStyleTypeArmenian = 12,
    styleListStyleTypeUpperLatin = 13,
    styleListStyleTypeLowerLatin = 14,
    styleListStyleTypeUpperGreek = 15,
    styleListStyleTypeLowerGreek = 16,
    styleListStyleType_Max = 0x7FFFFFFF
  } styleListStyleType;

  typedef enum _styleListStylePosition {
    styleListStylePositionNotSet = 0,
    styleListStylePositionInside = 1,
    styleListStylePositionOutSide = 2,
    styleListStylePosition_Max = 0x7FFFFFFF
  } styleListStylePosition;

  typedef enum _styleWhiteSpace {
    styleWhiteSpaceNotSet = 0,
    styleWhiteSpaceNormal = 1,
    styleWhiteSpacePre = 2,
    styleWhiteSpaceNowrap = 3,
    styleWhiteSpacePreline = 4,
    styleWhiteSpacePrewrap = 5,
    styleWhiteSpace_Max = 0x7FFFFFFF
  } styleWhiteSpace;

  typedef enum _stylePageBreak {
    stylePageBreakNotSet = 0,
    stylePageBreakAuto = 1,
    stylePageBreakAlways = 2,
    stylePageBreakLeft = 3,
    stylePageBreakRight = 4,
    stylePageBreakAvoid = 5,
    stylePageBreak_Max = 0x7FFFFFFF
  } stylePageBreak;

  typedef enum _stylePageBreakInside {
    stylePageBreakInsideNotSet = 0,
    stylePageBreakInsideAuto = 1,
    stylePageBreakInsideAvoid = 2,
    stylePageBreakInside_Max = 0x7FFFFFFF
  } stylePageBreakInside;

  typedef enum _styleCursor {
    styleCursorAuto = 0,
    styleCursorCrosshair = 1,
    styleCursorDefault = 2,
    styleCursorHand = 3,
    styleCursorMove = 4,
    styleCursorE_resize = 5,
    styleCursorNe_resize = 6,
    styleCursorNw_resize = 7,
    styleCursorN_resize = 8,
    styleCursorSe_resize = 9,
    styleCursorSw_resize = 10,
    styleCursorS_resize = 11,
    styleCursorW_resize = 12,
    styleCursorText = 13,
    styleCursorWait = 14,
    styleCursorHelp = 15,
    styleCursorPointer = 16,
    styleCursorProgress = 17,
    styleCursorNot_allowed = 18,
    styleCursorNo_drop = 19,
    styleCursorVertical_text = 20,
    styleCursorall_scroll = 21,
    styleCursorcol_resize = 22,
    styleCursorrow_resize = 23,
    styleCursorNone = 24,
    styleCursorContext_menu = 25,
    styleCursorEw_resize = 26,
    styleCursorNs_resize = 27,
    styleCursorNesw_resize = 28,
    styleCursorNwse_resize = 29,
    styleCursorCell = 30,
    styleCursorCopy = 31,
    styleCursorAlias = 32,
    styleCursorcustom = 33,
    styleCursorNotSet = 34,
    styleCursor_Max = 0x7FFFFFFF
  } styleCursor;

  typedef enum _styleDir {
    styleDirNotSet = 0,
    styleDirLeftToRight = 1,
    styleDirRightToLeft = 2,
    styleDirInherit = 3,
    styleDir_Max = 0x7FFFFFFF
  } styleDir;

  typedef enum _styleBidi {
    styleBidiNotSet = 0,
    styleBidiNormal = 1,
    styleBidiEmbed = 2,
    styleBidiOverride = 3,
    styleBidiInherit = 4,
    styleBidi_Max = 0x7FFFFFFF
  } styleBidi;

  typedef enum _styleImeMode {
    styleImeModeAuto = 0,
    styleImeModeActive = 1,
    styleImeModeInactive = 2,
    styleImeModeDisabled = 3,
    styleImeModeNotSet = 4,
    styleImeMode_Max = 0x7FFFFFFF
  } styleImeMode;

  typedef enum _styleRubyAlign {
    styleRubyAlignNotSet = 0,
    styleRubyAlignAuto = 1,
    styleRubyAlignLeft = 2,
    styleRubyAlignCenter = 3,
    styleRubyAlignRight = 4,
    styleRubyAlignDistributeLetter = 5,
    styleRubyAlignDistributeSpace = 6,
    styleRubyAlignLineEdge = 7,
    styleRubyAlign_Max = 0x7FFFFFFF
  } styleRubyAlign;

  typedef enum _styleRubyPosition {
    styleRubyPositionNotSet = 0,
    styleRubyPositionAbove = 1,
    styleRubyPositionInline = 2,
    styleRubyPosition_Max = 0x7FFFFFFF
  } styleRubyPosition;

  typedef enum _styleRubyOverhang {
    styleRubyOverhangNotSet = 0,
    styleRubyOverhangAuto = 1,
    styleRubyOverhangWhitespace = 2,
    styleRubyOverhangNone = 3,
    styleRubyOverhang_Max = 0x7FFFFFFF
  } styleRubyOverhang;

  typedef enum _styleLayoutGridChar {
    styleLayoutGridCharNotSet = 0,
    styleLayoutGridCharAuto = 1,
    styleLayoutGridCharNone = 2,
    styleLayoutGridChar_Max = 0x7FFFFFFF
  } styleLayoutGridChar;

  typedef enum _styleLayoutGridLine {
    styleLayoutGridLineNotSet = 0,
    styleLayoutGridLineAuto = 1,
    styleLayoutGridLineNone = 2,
    styleLayoutGridLine_Max = 0x7FFFFFFF
  } styleLayoutGridLine;

  typedef enum _styleLayoutGridMode {
    styleLayoutGridModeNotSet = 0,
    styleLayoutGridModeChar = 1,
    styleLayoutGridModeLine = 2,
    styleLayoutGridModeBoth = 3,
    styleLayoutGridModeNone = 4,
    styleLayoutGridMode_Max = 0x7FFFFFFF
  } styleLayoutGridMode;

  typedef enum _styleLayoutGridType {
    styleLayoutGridTypeNotSet = 0,
    styleLayoutGridTypeLoose = 1,
    styleLayoutGridTypeStrict = 2,
    styleLayoutGridTypeFixed = 3,
    styleLayoutGridType_Max = 0x7FFFFFFF
  } styleLayoutGridType;

  typedef enum _styleLineBreak {
    styleLineBreakNotSet = 0,
    styleLineBreakNormal = 1,
    styleLineBreakStrict = 2,
    styleLineBreak_Max = 0x7FFFFFFF
  } styleLineBreak;

  typedef enum _styleWordBreak {
    styleWordBreakNotSet = 0,
    styleWordBreakNormal = 1,
    styleWordBreakBreakAll = 2,
    styleWordBreakKeepAll = 3,
    styleWordBreak_Max = 0x7FFFFFFF
  } styleWordBreak;

  typedef enum _styleWordWrap {
    styleWordWrapNotSet = 0,
    styleWordWrapOff = 1,
    styleWordWrapOn = 2,
    styleWordWrap_Max = 0x7FFFFFFF
  } styleWordWrap;

  typedef enum _styleTextJustify {
    styleTextJustifyNotSet = 0,
    styleTextJustifyInterWord = 1,
    styleTextJustifyNewspaper = 2,
    styleTextJustifyDistribute = 3,
    styleTextJustifyDistributeAllLines = 4,
    styleTextJustifyInterIdeograph = 5,
    styleTextJustifyInterCluster = 6,
    styleTextJustifyKashida = 7,
    styleTextJustifyAuto = 8,
    styleTextJustify_Max = 0x7FFFFFFF
  } styleTextJustify;

  typedef enum _styleTextAlignLast {
    styleTextAlignLastNotSet = 0,
    styleTextAlignLastLeft = 1,
    styleTextAlignLastCenter = 2,
    styleTextAlignLastRight = 3,
    styleTextAlignLastJustify = 4,
    styleTextAlignLastAuto = 5,
    styleTextAlignLast_Max = 0x7FFFFFFF
  } styleTextAlignLast;

  typedef enum _styleTextJustifyTrim {
    styleTextJustifyTrimNotSet = 0,
    styleTextJustifyTrimNone = 1,
    styleTextJustifyTrimPunctuation = 2,
    styleTextJustifyTrimPunctAndKana = 3,
    styleTextJustifyTrim_Max = 0x7FFFFFFF
  } styleTextJustifyTrim;

  typedef enum _styleAccelerator {
    styleAcceleratorFalse = 0,
    styleAcceleratorTrue = 1,
    styleAccelerator_Max = 0x7FFFFFFF
  } styleAccelerator;

  typedef enum _styleLayoutFlow {
    styleLayoutFlowHorizontal = 0,
    styleLayoutFlowVerticalIdeographic = 1,
    styleLayoutFlowNotSet = 2,
    styleLayoutFlow_Max = 0x7FFFFFFF
  } styleLayoutFlow;

  typedef enum _styleBlockProgression {
    styleBlockProgressionTb = 0,
    styleBlockProgressionRl = 1,
    styleBlockProgressionBt = 2,
    styleBlockProgressionLr = 3,
    styleBlockProgressionNotSet = 4,
    styleBlockProgression_Max = 0x7FFFFFFF
  } styleBlockProgression;

  typedef enum _styleWritingMode {
    styleWritingModeLrtb = 0,
    styleWritingModeTbrl = 1,
    styleWritingModeRltb = 2,
    styleWritingModeBtrl = 3,
    styleWritingModeNotSet = 4,
    styleWritingModeTblr = 5,
    styleWritingModeBtlr = 6,
    styleWritingModeLrbt = 7,
    styleWritingModeRlbt = 8,
    styleWritingModeLr = 9,
    styleWritingModeRl = 10,
    styleWritingModeTb = 11,
    styleWritingMode_Max = 0x7FFFFFFF
  } styleWritingMode;

  typedef enum _styleBool {
    styleBoolFalse = 0,
    styleBoolTrue = 1,
    styleBool_Max = 0x7FFFFFFF
  } styleBool;

  typedef enum _styleTextUnderlinePosition {
    styleTextUnderlinePositionBelow = 0,
    styleTextUnderlinePositionAbove = 1,
    styleTextUnderlinePositionAuto = 2,
    styleTextUnderlinePositionNotSet = 3,
    styleTextUnderlinePosition_Max = 0x7FFFFFFF
  } styleTextUnderlinePosition;

  typedef enum _styleTextOverflow {
    styleTextOverflowClip = 0,
    styleTextOverflowEllipsis = 1,
    styleTextOverflowNotSet = 2,
    styleTextOverflow_Max = 0x7FFFFFFF
  } styleTextOverflow;

  typedef enum _styleInterpolation {
    styleInterpolationNotSet = 0,
    styleInterpolationNN = 1,
    styleInterpolationBCH = 2,
    styleInterpolation_Max = 0x7FFFFFFF
  } styleInterpolation;

  typedef enum _styleBoxSizing {
    styleBoxSizingNotSet = 0,
    styleBoxSizingContentBox = 1,
    styleBoxSizingBorderBox = 2,
    styleBoxSizing_Max = 0x7FFFFFFF
  } styleBoxSizing;

  typedef enum _styleMsFlex {
    styleMsFlexNone = 0,
    styleMsFlexNotSet = 1,
    styleMsFlex_Max = 0x7FFFFFFF
  } styleMsFlex;

  typedef enum _styleMsFlexPreferredSize {
    styleMsFlexPreferredSizeAuto = 0,
    styleMsFlexPreferredSizeNotSet = 1,
    styleMsFlexPreferredSize_Max = 0x7FFFFFFF
  } styleMsFlexPreferredSize;

  typedef enum _styleMsFlexDirection {
    styleMsFlexDirectionRow = 0,
    styleMsFlexDirectionRowReverse = 1,
    styleMsFlexDirectionColumn = 2,
    styleMsFlexDirectionColumnReverse = 3,
    styleMsFlexDirectionNotSet = 4,
    styleMsFlexDirection_Max = 0x7FFFFFFF
  } styleMsFlexDirection;

  typedef enum _styleMsFlexWrap {
    styleMsFlexWrapNowrap = 0,
    styleMsFlexWrapWrap = 1,
    styleMsFlexWrapWrapReverse = 2,
    styleMsFlexWrapNotSet = 3,
    styleMsFlexWrap_Max = 0x7FFFFFFF
  } styleMsFlexWrap;

  typedef enum _styleMsFlexAlign {
    styleMsFlexAlignStart = 0,
    styleMsFlexAlignEnd = 1,
    styleMsFlexAlignCenter = 2,
    styleMsFlexAlignBaseline = 3,
    styleMsFlexAlignStretch = 4,
    styleMsFlexAlignNotSet = 5,
    styleMsFlexAlign_Max = 0x7FFFFFFF
  } styleMsFlexAlign;

  typedef enum _styleMsFlexItemAlign {
    styleMsFlexItemAlignStart = 0,
    styleMsFlexItemAlignEnd = 1,
    styleMsFlexItemAlignCenter = 2,
    styleMsFlexItemAlignBaseline = 3,
    styleMsFlexItemAlignStretch = 4,
    styleMsFlexItemAlignAuto = 5,
    styleMsFlexItemAlignNotSet = 6,
    styleMsFlexItemAlign_Max = 0x7FFFFFFF
  } styleMsFlexItemAlign;

  typedef enum _styleMsFlexPack {
    styleMsFlexPackStart = 0,
    styleMsFlexPackEnd = 1,
    styleMsFlexPackCenter = 2,
    styleMsFlexPackJustify = 3,
    styleMsFlexPackDistribute = 4,
    styleMsFlexPackNotSet = 5,
    styleMsFlexPack_Max = 0x7FFFFFFF
  } styleMsFlexPack;

  typedef enum _styleMsFlexLinePack {
    styleMsFlexLinePackStart = 0,
    styleMsFlexLinePackEnd = 1,
    styleMsFlexLinePackCenter = 2,
    styleMsFlexLinePackJustify = 3,
    styleMsFlexLinePackDistribute = 4,
    styleMsFlexLinePackStretch = 5,
    styleMsFlexLinePackNotSet = 6,
    styleMsFlexLinePack_Max = 0x7FFFFFFF
  } styleMsFlexLinePack;

  typedef enum _styleColumnFill {
    styleColumnFillAuto = 0,
    styleColumnFillBalance = 1,
    styleColumnFillNotSet = 2,
    styleColumnFill_Max = 0x7FFFFFFF
  } styleColumnFill;

  typedef enum _styleColumnSpan {
    styleColumnSpanOne = 0,
    styleColumnSpanAll = 1,
    styleColumnSpanNotSet = 2,
    styleColumnSpan_Max = 0x7FFFFFFF
  } styleColumnSpan;

  typedef enum _styleBreak {
    styleBreakNotSet = 0,
    styleBreakAuto = 1,
    styleBreakAlways = 2,
    styleBreakAvoid = 3,
    styleBreakLeft = 4,
    styleBreakRight = 5,
    styleBreakPage = 6,
    styleBreakColumn = 7,
    styleBreakAvoidPage = 8,
    styleBreakAvoidColumn = 9,
    styleBreak_Max = 0x7FFFFFFF
  } styleBreak;

  typedef enum _styleBreakInside {
    styleBreakInsideNotSet = 0,
    styleBreakInsideAuto = 1,
    styleBreakInsideAvoid = 2,
    styleBreakInsideAvoidPage = 3,
    styleBreakInsideAvoidColumn = 4,
    styleBreakInside_Max = 0x7FFFFFFF
  } styleBreakInside;

  typedef enum _styleMsScrollChaining {
    styleMsScrollChainingNotSet = 0,
    styleMsScrollChainingNone = 1,
    styleMsScrollChainingChained = 2,
    styleMsScrollChaining_Max = 0x7FFFFFFF
  } styleMsScrollChaining;

  typedef enum _styleMsContentZooming {
    styleMsContentZoomingNotSet = 0,
    styleMsContentZoomingNone = 1,
    styleMsContentZoomingZoom = 2,
    styleMsContentZooming_Max = 0x7FFFFFFF
  } styleMsContentZooming;

  typedef enum _styleMsContentZoomSnapType {
    styleMsContentZoomSnapTypeNotSet = 0,
    styleMsContentZoomSnapTypeNone = 1,
    styleMsContentZoomSnapTypeMandatory = 2,
    styleMsContentZoomSnapTypeProximity = 3,
    styleMsContentZoomSnapType_Max = 0x7FFFFFFF
  } styleMsContentZoomSnapType;

  typedef enum _styleMsScrollRails {
    styleMsScrollRailsNotSet = 0,
    styleMsScrollRailsNone = 1,
    styleMsScrollRailsRailed = 2,
    styleMsScrollRails_Max = 0x7FFFFFFF
  } styleMsScrollRails;

  typedef enum _styleMsContentZoomChaining {
    styleMsContentZoomChainingNotSet = 0,
    styleMsContentZoomChainingNone = 1,
    styleMsContentZoomChainingChained = 2,
    styleMsContentZoomChaining_Max = 0x7FFFFFFF
  } styleMsContentZoomChaining;

  typedef enum _styleMsScrollSnapType {
    styleMsScrollSnapTypeNotSet = 0,
    styleMsScrollSnapTypeNone = 1,
    styleMsScrollSnapTypeMandatory = 2,
    styleMsScrollSnapTypeProximity = 3,
    styleMsScrollSnapType_Max = 0x7FFFFFFF
  } styleMsScrollSnapType;

  typedef enum _styleGridColumn {
    styleGridColumnNotSet = 0,
    styleGridColumn_Max = 0x7FFFFFFF
  } styleGridColumn;

  typedef enum _styleGridColumnAlign {
    styleGridColumnAlignCenter = 0,
    styleGridColumnAlignEnd = 1,
    styleGridColumnAlignStart = 2,
    styleGridColumnAlignStretch = 3,
    styleGridColumnAlignNotSet = 4,
    styleGridColumnAlign_Max = 0x7FFFFFFF
  } styleGridColumnAlign;

  typedef enum _styleGridColumnSpan {
    styleGridColumnSpanNotSet = 0,
    styleGridColumnSpan_Max = 0x7FFFFFFF
  } styleGridColumnSpan;

  typedef enum _styleGridRow {
    styleGridRowNotSet = 0,
    styleGridRow_Max = 0x7FFFFFFF
  } styleGridRow;

  typedef enum _styleGridRowAlign {
    styleGridRowAlignCenter = 0,
    styleGridRowAlignEnd = 1,
    styleGridRowAlignStart = 2,
    styleGridRowAlignStretch = 3,
    styleGridRowAlignNotSet = 4,
    styleGridRowAlign_Max = 0x7FFFFFFF
  } styleGridRowAlign;

  typedef enum _styleGridRowSpan {
    styleGridRowSpanNotSet = 0,
    styleGridRowSpan_Max = 0x7FFFFFFF
  } styleGridRowSpan;

  typedef enum _styleWrapThrough {
    styleWrapThroughNotSet = 0,
    styleWrapThroughWrap = 1,
    styleWrapThroughNone = 2,
    styleWrapThrough_Max = 0x7FFFFFFF
  } styleWrapThrough;

  typedef enum _styleWrapFlow {
    styleWrapFlowNotSet = 0,
    styleWrapFlowAuto = 1,
    styleWrapFlowBoth = 2,
    styleWrapFlowStart = 3,
    styleWrapFlowEnd = 4,
    styleWrapFlowClear = 5,
    styleWrapFlowMinimum = 6,
    styleWrapFlowMaximum = 7,
    styleWrapFlow_Max = 0x7FFFFFFF
  } styleWrapFlow;

  typedef enum _styleAlignmentBaseline {
    styleAlignmentBaselineNotSet = 0,
    styleAlignmentBaselineAfterEdge = 1,
    styleAlignmentBaselineAlphabetic = 2,
    styleAlignmentBaselineAuto = 3,
    styleAlignmentBaselineBaseline = 4,
    styleAlignmentBaselineBeforeEdge = 5,
    styleAlignmentBaselineCentral = 6,
    styleAlignmentBaselineHanging = 7,
    styleAlignmentBaselineMathematical = 8,
    styleAlignmentBaselineMiddle = 9,
    styleAlignmentBaselineTextAfterEdge = 10,
    styleAlignmentBaselineTextBeforeEdge = 11,
    styleAlignmentBaselineIdeographic = 12,
    styleAlignmentBaseline_Max = 0x7FFFFFFF
  } styleAlignmentBaseline;

  typedef enum _styleBaselineShift {
    styleBaselineShiftBaseline = 0,
    styleBaselineShiftSub = 1,
    styleBaselineShiftSuper = 2,
    styleBaselineShift_Max = 0x7FFFFFFF
  } styleBaselineShift;

  typedef enum _styleClipRule {
    styleClipRuleNotSet = 0,
    styleClipRuleNonZero = 1,
    styleClipRuleEvenOdd = 2,
    styleClipRule_Max = 0x7FFFFFFF
  } styleClipRule;

  typedef enum _styleDominantBaseline {
    styleDominantBaselineNotSet = 0,
    styleDominantBaselineAlphabetic = 1,
    styleDominantBaselineAuto = 2,
    styleDominantBaselineCentral = 3,
    styleDominantBaselineHanging = 4,
    styleDominantBaselineIdeographic = 5,
    styleDominantBaselineMathematical = 6,
    styleDominantBaselineMiddle = 7,
    styleDominantBaselineNoChange = 8,
    styleDominantBaselineResetSize = 9,
    styleDominantBaselineTextAfterEdge = 10,
    styleDominantBaselineTextBeforeEdge = 11,
    styleDominantBaselineUseScript = 12,
    styleDominantBaseline_Max = 0x7FFFFFFF
  } styleDominantBaseline;

  typedef enum _styleFillRule {
    styleFillRuleNotSet = 0,
    styleFillRuleNonZero = 1,
    styleFillRuleEvenOdd = 2,
    styleFillRule_Max = 0x7FFFFFFF
  } styleFillRule;

  typedef enum _styleFontStretch {
    styleFontStretchNotSet = 0,
    styleFontStretchWider = 1,
    styleFontStretchNarrower = 2,
    styleFontStretchUltraCondensed = 3,
    styleFontStretchExtraCondensed = 4,
    styleFontStretchCondensed = 5,
    styleFontStretchSemiCondensed = 6,
    styleFontStretchNormal = 7,
    styleFontStretchSemiExpanded = 8,
    styleFontStretchExpanded = 9,
    styleFontStretchExtraExpanded = 10,
    styleFontStretchUltraExpanded = 11,
    styleFontStretch_Max = 0x7FFFFFFF
  } styleFontStretch;

  typedef enum _stylePointerEvents {
    stylePointerEventsNotSet = 0,
    stylePointerEventsVisiblePainted = 1,
    stylePointerEventsVisibleFill = 2,
    stylePointerEventsVisibleStroke = 3,
    stylePointerEventsVisible = 4,
    stylePointerEventsPainted = 5,
    stylePointerEventsFill = 6,
    stylePointerEventsStroke = 7,
    stylePointerEventsAll = 8,
    stylePointerEventsNone = 9,
    stylePointerEvents_Max = 0x7FFFFFFF
  } stylePointerEvents;

  typedef enum _styleEnableBackground {
    styleEnableBackgroundNotSet = 0,
    styleEnableBackgroundAccumulate = 1,
    styleEnableBackgroundNew = 2,
    styleEnableBackgroundInherit = 3,
    styleEnableBackground_Max = 0x7FFFFFFF
  } styleEnableBackground;

  typedef enum _styleStrokeLinecap {
    styleStrokeLinecapNotSet = 0,
    styleStrokeLinecapButt = 1,
    styleStrokeLinecapRound = 2,
    styleStrokeLinecapSquare = 3,
    styleStrokeLinecap_Max = 0x7FFFFFFF
  } styleStrokeLinecap;

  typedef enum _styleStrokeLinejoin {
    styleStrokeLinejoinNotSet = 0,
    styleStrokeLinejoinMiter = 1,
    styleStrokeLinejoinRound = 2,
    styleStrokeLinejoinBevel = 3,
    styleStrokeLinejoin_Max = 0x7FFFFFFF
  } styleStrokeLinejoin;

  typedef enum _styleTextAnchor {
    styleTextAnchorNotSet = 0,
    styleTextAnchorStart = 1,
    styleTextAnchorMiddle = 2,
    styleTextAnchorEnd = 3,
    styleTextAnchor_Max = 0x7FFFFFFF
  } styleTextAnchor;

  typedef enum _styleAttrType {
    styleAttrTypeString = 0,
    styleAttrTypeColor = 1,
    styleAttrTypeUrl = 2,
    styleAttrTypeInteger = 3,
    styleAttrTypeNumber = 4,
    styleAttrTypeLength = 5,
    styleAttrTypePx = 6,
    styleAttrTypeEm = 7,
    styleAttrTypeEx = 8,
    styleAttrTypeIn = 9,
    styleAttrTypeCm = 10,
    styleAttrTypeMm = 11,
    styleAttrTypePt = 12,
    styleAttrTypePc = 13,
    styleAttrTypeRem = 14,
    styleAttrTypeCh = 15,
    styleAttrTypeVh = 16,
    styleAttrTypeVw = 17,
    styleAttrTypeVmin = 18,
    styleAttrTypePercentage = 19,
    styleAttrTypeAngle = 20,
    styleAttrTypeDeg = 21,
    styleAttrTypeRad = 22,
    styleAttrTypeGrad = 23,
    styleAttrTypeTime = 24,
    styleAttrTypeS = 25,
    styleAttrTypeMs = 26,
    styleAttrType_Max = 0x7FFFFFFF
  } styleAttrType;

  typedef enum _styleInitialColor {
    styleInitialColorNoInitial = 0,
    styleInitialColorColorProperty = 1,
    styleInitialColorTransparent = 2,
    styleInitialColorInvert = 3,
    styleInitialColor_Max = 0x7FFFFFFF
  } styleInitialColor;

  typedef enum _styleInitialString {
    styleInitialStringNoInitial = 0,
    styleInitialStringNone = 1,
    styleInitialStringAuto = 2,
    styleInitialStringNormal = 3,
    styleInitialString_Max = 0x7FFFFFFF
  } styleInitialString;

  typedef enum _styleTransformOriginX {
    styleTransformOriginXNotSet = 0,
    styleTransformOriginXLeft = 1,
    styleTransformOriginXCenter = 2,
    styleTransformOriginXRight = 3,
    styleTransformOriginX_Max = 0x7FFFFFFF
  } styleTransformOriginX;

  typedef enum _styleTransformOriginY {
    styleTransformOriginYNotSet = 0,
    styleTransformOriginYTop = 1,
    styleTransformOriginYCenter = 2,
    styleTransformOriginYBottom = 3,
    styleTransformOriginY_Max = 0x7FFFFFFF
  } styleTransformOriginY;

  typedef enum _stylePerspectiveOriginX {
    stylePerspectiveOriginXNotSet = 0,
    stylePerspectiveOriginXLeft = 1,
    stylePerspectiveOriginXCenter = 2,
    stylePerspectiveOriginXRight = 3,
    stylePerspectiveOriginX_Max = 0x7FFFFFFF
  } stylePerspectiveOriginX;

  typedef enum _stylePerspectiveOriginY {
    stylePerspectiveOriginYNotSet = 0,
    stylePerspectiveOriginYTop = 1,
    stylePerspectiveOriginYCenter = 2,
    stylePerspectiveOriginYBottom = 3,
    stylePerspectiveOriginY_Max = 0x7FFFFFFF
  } stylePerspectiveOriginY;

  typedef enum _styleTransformStyle {
    styleTransformStyleFlat = 0,
    styleTransformStyleNotSet = 1,
    styleTransformStyle_Max = 0x7FFFFFFF
  } styleTransformStyle;

  typedef enum _styleBackfaceVisibility {
    styleBackfaceVisibilityVisible = 0,
    styleBackfaceVisibilityHidden = 1,
    styleBackfaceVisibilityNotSet = 2,
    styleBackfaceVisibility_Max = 0x7FFFFFFF
  } styleBackfaceVisibility;

  typedef enum _styleTextSizeAdjust {
    styleTextSizeAdjustNone = 0,
    styleTextSizeAdjustAuto = 1,
    styleTextSizeAdjust_Max = 0x7FFFFFFF
  } styleTextSizeAdjust;

  typedef enum _styleColorInterpolationFilters {
    styleColorInterpolationFiltersAuto = 0,
    styleColorInterpolationFiltersSRgb = 1,
    styleColorInterpolationFiltersLinearRgb = 2,
    styleColorInterpolationFiltersNotSet = 3,
    styleColorInterpolationFilters_Max = 0x7FFFFFFF
  } styleColorInterpolationFilters;

  typedef enum _styleHyphens {
    styleHyphensNone = 0,
    styleHyphensManual = 1,
    styleHyphensAuto = 2,
    styleHyphensNotSet = 3,
    styleHyphens_Max = 0x7FFFFFFF
  } styleHyphens;

  typedef enum _styleHyphenateLimitLines {
    styleHyphenateLimitLinesNoLimit = 0,
    styleHyphenateLimitLines_Max = 0x7FFFFFFF
  } styleHyphenateLimitLines;

  typedef enum _styleMsAnimationPlayState {
    styleMsAnimationPlayStateRunning = 0,
    styleMsAnimationPlayStatePaused = 1,
    styleMsAnimationPlayStateNotSet = 2,
    styleMsAnimationPlayState_Max = 0x7FFFFFFF
  } styleMsAnimationPlayState;

  typedef enum _styleMsAnimationDirection {
    styleMsAnimationDirectionNormal = 0,
    styleMsAnimationDirectionAlternate = 1,
    styleMsAnimationDirectionReverse = 2,
    styleMsAnimationDirectionAlternateReverse = 3,
    styleMsAnimationDirectionNotSet = 4,
    styleMsAnimationDirection_Max = 0x7FFFFFFF
  } styleMsAnimationDirection;

  typedef enum _styleMsAnimationFillMode {
    styleMsAnimationFillModeNone = 0,
    styleMsAnimationFillModeForwards = 1,
    styleMsAnimationFillModeBackwards = 2,
    styleMsAnimationFillModeBoth = 3,
    styleMsAnimationFillModeNotSet = 4,
    styleMsAnimationFillMode_Max = 0x7FFFFFFF
  } styleMsAnimationFillMode;

  typedef enum _styleMsHighContrastAdjust {
    styleMsHighContrastAdjustNotSet = 0,
    styleMsHighContrastAdjustAuto = 1,
    styleMsHighContrastAdjustNone = 2,
    styleMsHighContrastAdjust_Max = 0x7FFFFFFF
  } styleMsHighContrastAdjust;

  typedef enum _styleMsUserSelect {
    styleMsUserSelectAuto = 0,
    styleMsUserSelectText = 1,
    styleMsUserSelectElement = 2,
    styleMsUserSelectNone = 3,
    styleMsUserSelectNotSet = 4,
    styleMsUserSelect_Max = 0x7FFFFFFF
  } styleMsUserSelect;

  typedef enum _styleMsTouchAction {
    styleMsTouchActionNotSet = -1,
    styleMsTouchActionNone = 0,
    styleMsTouchActionAuto = 1,
    styleMsTouchActionManipulation = 2,
    styleMsTouchActionDoubleTapZoom = 4,
    styleMsTouchActionPanX = 8,
    styleMsTouchActionPanY = 16,
    styleMsTouchActionPinchZoom = 32,
    styleMsTouchAction_Max = 0x7FFFFFFF
  } styleMsTouchAction;

  typedef enum _styleMsTouchSelect {
    styleMsTouchSelectGrippers = 0,
    styleMsTouchSelectNone = 1,
    styleMsTouchSelectNotSet = 2,
    styleMsTouchSelect_Max = 0x7FFFFFFF
  } styleMsTouchSelect;

  typedef enum _styleMsScrollTranslation {
    styleMsScrollTranslationNotSet = 0,
    styleMsScrollTranslationNone = 1,
    styleMsScrollTranslationVtoH = 2,
    styleMsScrollTranslation_Max = 0x7FFFFFFF
  } styleMsScrollTranslation;

  [odl, oleautomation, dual, uuid (3051049b-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLDOMConstructor : IDispatch {
    [id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), propget, hidden] HRESULT constructor ([retval, out] IDispatch **p);
    HRESULT LookupGetter ([in] BSTR propname,[retval, out] VARIANT *ppDispHandler);
    HRESULT LookupSetter ([in] BSTR propname,[retval, out] VARIANT *ppDispHandler);
    HRESULT DefineGetter ([in] BSTR propname,[in] VARIANT *pdispHandler);
    HRESULT DefineSetter ([in] BSTR propname,[in] VARIANT *pdispHandler);
  };

  [odl, oleautomation, dual, uuid (30510740-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLCSSStyleDeclaration : IDispatch {
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_LENGTH), propget] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_PARENTRULE), propget] HRESULT parentRule ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYVALUE)] HRESULT getPropertyValue ([in] BSTR bstrPropertyName,[retval, out] BSTR *pbstrPropertyValue);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYPRIORITY)] HRESULT getPropertyPriority ([in] BSTR bstrPropertyName,[retval, out] BSTR *pbstrPropertyPriority);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_REMOVEPROPERTY)] HRESULT removeProperty ([in] BSTR bstrPropertyName,[retval, out] BSTR *pbstrPropertyValue);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_SETPROPERTY)] HRESULT setProperty ([in] BSTR bstrPropertyName,[in] VARIANT *pvarPropertyValue,[defaultvalue (NULL), in] VARIANT *pvarPropertyPriority);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_ITEM)] HRESULT item ([in] long index,[retval, out] BSTR *pbstrPropertyName);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTFAMILY), propput, displaybind, bindable] HRESULT fontFamily ([in] BSTR v);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTFAMILY), propget, displaybind, bindable] HRESULT fontFamily ([retval, out] BSTR *p);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTYLE), propput, displaybind, bindable] HRESULT fontStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTYLE), displaybind, bindable] HRESULT fontStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTVARIANT), displaybind, bindable] HRESULT fontVariant ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTVARIANT), displaybind, bindable] HRESULT fontVariant ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTWEIGHT), displaybind, bindable] HRESULT fontWeight ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTWEIGHT), displaybind, bindable] HRESULT fontWeight ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZE), displaybind, bindable] HRESULT fontSize ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZE), displaybind, bindable] HRESULT fontSize ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONT), displaybind, bindable, nonbrowsable] HRESULT font ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONT), displaybind, bindable, nonbrowsable] HRESULT font ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_COLOR), displaybind, bindable] HRESULT color ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_COLOR), displaybind, bindable] HRESULT color ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUND), displaybind, bindable, nonbrowsable] HRESULT background ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUND), displaybind, bindable, nonbrowsable] HRESULT background ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCOLOR), displaybind, bindable] HRESULT backgroundColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCOLOR), displaybind, bindable] HRESULT backgroundColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDIMAGE), displaybind, bindable] HRESULT backgroundImage ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDIMAGE), displaybind, bindable] HRESULT backgroundImage ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDREPEAT), displaybind, bindable] HRESULT backgroundRepeat ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDREPEAT), displaybind, bindable] HRESULT backgroundRepeat ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDATTACHMENT), displaybind, bindable] HRESULT backgroundAttachment ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDATTACHMENT), displaybind, bindable] HRESULT backgroundAttachment ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITION), displaybind, bindable] HRESULT backgroundPosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITION), displaybind, bindable] HRESULT backgroundPosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONX), displaybind, bindable] HRESULT backgroundPositionX ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONX), displaybind, bindable] HRESULT backgroundPositionX ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONY), displaybind, bindable] HRESULT backgroundPositionY ([in] VARIANT v);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONY), propget, displaybind, bindable] HRESULT backgroundPositionY ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDSPACING), displaybind, bindable] HRESULT wordSpacing ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDSPACING), displaybind, bindable] HRESULT wordSpacing ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_LETTERSPACING), propput, displaybind, bindable] HRESULT letterSpacing ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LETTERSPACING), displaybind, bindable] HRESULT letterSpacing ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTDECORATION), displaybind, bindable] HRESULT textDecoration ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTDECORATION), displaybind, bindable] HRESULT textDecoration ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_VERTICALALIGN), displaybind, bindable] HRESULT verticalAlign ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_VERTICALALIGN), displaybind, bindable] HRESULT verticalAlign ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTTRANSFORM), displaybind, bindable] HRESULT textTransform ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTTRANSFORM), displaybind, bindable] HRESULT textTransform ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGN), displaybind, bindable] HRESULT textAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGN), displaybind, bindable] HRESULT textAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTINDENT), displaybind, bindable] HRESULT textIndent ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTINDENT), displaybind, bindable] HRESULT textIndent ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LINEHEIGHT), displaybind, bindable] HRESULT lineHeight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LINEHEIGHT), displaybind, bindable] HRESULT lineHeight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINTOP), displaybind, bindable] HRESULT marginTop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINTOP), displaybind, bindable] HRESULT marginTop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINRIGHT), displaybind, bindable] HRESULT marginRight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINRIGHT), displaybind, bindable] HRESULT marginRight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINBOTTOM), displaybind, bindable] HRESULT marginBottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINBOTTOM), displaybind, bindable] HRESULT marginBottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINLEFT), displaybind, bindable] HRESULT marginLeft ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINLEFT), displaybind, bindable] HRESULT marginLeft ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGIN), displaybind, bindable, nonbrowsable] HRESULT margin ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGIN), displaybind, bindable, nonbrowsable] HRESULT margin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGTOP), displaybind, bindable] HRESULT paddingTop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGTOP), displaybind, bindable] HRESULT paddingTop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGRIGHT), displaybind, bindable] HRESULT paddingRight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGRIGHT), displaybind, bindable] HRESULT paddingRight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGBOTTOM), displaybind, bindable] HRESULT paddingBottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGBOTTOM), displaybind, bindable] HRESULT paddingBottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGLEFT), displaybind, bindable] HRESULT paddingLeft ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGLEFT), displaybind, bindable] HRESULT paddingLeft ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDING), displaybind, bindable, nonbrowsable] HRESULT padding ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDING), displaybind, bindable, nonbrowsable] HRESULT padding ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDER), displaybind, bindable, nonbrowsable] HRESULT border ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDER), displaybind, bindable, nonbrowsable] HRESULT border ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOP), displaybind, bindable] HRESULT borderTop ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOP), displaybind, bindable] HRESULT borderTop ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHT), displaybind, bindable] HRESULT borderRight ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHT), displaybind, bindable] HRESULT borderRight ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOM), displaybind, bindable] HRESULT borderBottom ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOM), displaybind, bindable] HRESULT borderBottom ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFT), displaybind, bindable] HRESULT borderLeft ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFT), displaybind, bindable] HRESULT borderLeft ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLOR), displaybind, bindable] HRESULT borderColor ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLOR), displaybind, bindable] HRESULT borderColor ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPCOLOR), displaybind, bindable] HRESULT borderTopColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPCOLOR), displaybind, bindable] HRESULT borderTopColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTCOLOR), displaybind, bindable] HRESULT borderRightColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTCOLOR), displaybind, bindable] HRESULT borderRightColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMCOLOR), displaybind, bindable] HRESULT borderBottomColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMCOLOR), displaybind, bindable] HRESULT borderBottomColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTCOLOR), displaybind, bindable] HRESULT borderLeftColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTCOLOR), displaybind, bindable] HRESULT borderLeftColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERWIDTH), displaybind, bindable] HRESULT borderWidth ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERWIDTH), displaybind, bindable] HRESULT borderWidth ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPWIDTH), displaybind, bindable] HRESULT borderTopWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPWIDTH), displaybind, bindable] HRESULT borderTopWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTWIDTH), displaybind, bindable] HRESULT borderRightWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTWIDTH), displaybind, bindable] HRESULT borderRightWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMWIDTH), displaybind, bindable] HRESULT borderBottomWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMWIDTH), displaybind, bindable] HRESULT borderBottomWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTWIDTH), displaybind, bindable] HRESULT borderLeftWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTWIDTH), displaybind, bindable] HRESULT borderLeftWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSTYLE), displaybind, bindable] HRESULT borderStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSTYLE), displaybind, bindable] HRESULT borderStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPSTYLE), displaybind, bindable] HRESULT borderTopStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPSTYLE), displaybind, bindable] HRESULT borderTopStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTSTYLE), displaybind, bindable] HRESULT borderRightStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTSTYLE), displaybind, bindable] HRESULT borderRightStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMSTYLE), displaybind, bindable] HRESULT borderBottomStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMSTYLE), displaybind, bindable] HRESULT borderBottomStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTSTYLE), displaybind, bindable] HRESULT borderLeftStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTSTYLE), displaybind, bindable] HRESULT borderLeftStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WIDTH), displaybind, bindable] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WIDTH), displaybind, bindable] HRESULT width ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_HEIGHT), displaybind, bindable] HRESULT height ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_HEIGHT), displaybind, bindable] HRESULT height ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STYLEFLOAT), displaybind, bindable] HRESULT styleFloat ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STYLEFLOAT), displaybind, bindable] HRESULT styleFloat ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLEAR), displaybind, bindable] HRESULT clear ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLEAR), displaybind, bindable] HRESULT clear ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_DISPLAY), displaybind, bindable] HRESULT display ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_DISPLAY), displaybind, bindable] HRESULT display ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_VISIBILITY), displaybind, bindable] HRESULT visibility ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_VISIBILITY), displaybind, bindable] HRESULT visibility ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLETYPE), displaybind, bindable] HRESULT listStyleType ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLETYPE), displaybind, bindable] HRESULT listStyleType ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEPOSITION), displaybind, bindable] HRESULT listStylePosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEPOSITION), displaybind, bindable] HRESULT listStylePosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEIMAGE), displaybind, bindable] HRESULT listStyleImage ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEIMAGE), displaybind, bindable] HRESULT listStyleImage ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLE), displaybind, bindable, nonbrowsable] HRESULT listStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLE), displaybind, bindable, nonbrowsable] HRESULT listStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WHITESPACE), displaybind, bindable] HRESULT whiteSpace ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WHITESPACE), displaybind, bindable] HRESULT whiteSpace ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TOP), displaybind, bindable] HRESULT top ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TOP), displaybind, bindable] HRESULT top ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LEFT), displaybind, bindable] HRESULT left ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LEFT), displaybind, bindable] HRESULT left ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ZINDEX), displaybind, bindable] HRESULT zIndex ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ZINDEX), displaybind, bindable] HRESULT zIndex ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOW), displaybind, bindable] HRESULT overflow ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOW), displaybind, bindable] HRESULT overflow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKBEFORE), displaybind, bindable] HRESULT pageBreakBefore ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKBEFORE), displaybind, bindable] HRESULT pageBreakBefore ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKAFTER), displaybind, bindable] HRESULT pageBreakAfter ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKAFTER), displaybind, bindable] HRESULT pageBreakAfter ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CSSTEXT), displaybind, bindable, nonbrowsable] HRESULT cssText ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CSSTEXT), displaybind, bindable, nonbrowsable] HRESULT cssText ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CURSOR), displaybind, bindable] HRESULT cursor ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CURSOR), displaybind, bindable] HRESULT cursor ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIP), displaybind, bindable] HRESULT clip ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIP), displaybind, bindable] HRESULT clip ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILTER), displaybind, bindable] HRESULT filter ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILTER), displaybind, bindable] HRESULT filter ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TABLELAYOUT), displaybind, bindable] HRESULT tableLayout ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TABLELAYOUT), displaybind, bindable] HRESULT tableLayout ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLLAPSE), displaybind, bindable] HRESULT borderCollapse ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLLAPSE), displaybind, bindable] HRESULT borderCollapse ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_DIRECTION), displaybind, bindable] HRESULT direction ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_DIRECTION), displaybind, bindable] HRESULT direction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BEHAVIOR), displaybind, bindable] HRESULT behavior ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BEHAVIOR), displaybind, bindable] HRESULT behavior ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_POSITION), displaybind, bindable] HRESULT position ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_POSITION), displaybind, bindable] HRESULT position ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_UNICODEBIDI), displaybind, bindable] HRESULT unicodeBidi ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_UNICODEBIDI), displaybind, bindable] HRESULT unicodeBidi ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOTTOM), displaybind, bindable] HRESULT bottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOTTOM), displaybind, bindable] HRESULT bottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_RIGHT), displaybind, bindable] HRESULT right ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_RIGHT), displaybind, bindable] HRESULT right ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_IMEMODE), displaybind, bindable] HRESULT imeMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_IMEMODE), displaybind, bindable] HRESULT imeMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYALIGN), displaybind, bindable] HRESULT rubyAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYALIGN), displaybind, bindable] HRESULT rubyAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYPOSITION), displaybind, bindable] HRESULT rubyPosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYPOSITION), displaybind, bindable] HRESULT rubyPosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYOVERHANG), displaybind, bindable] HRESULT rubyOverhang ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYOVERHANG), displaybind, bindable] HRESULT rubyOverhang ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDCHAR), displaybind, bindable] HRESULT layoutGridChar ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDCHAR), displaybind, bindable] HRESULT layoutGridChar ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDLINE), displaybind, bindable] HRESULT layoutGridLine ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDLINE), displaybind, bindable] HRESULT layoutGridLine ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDMODE), displaybind, bindable] HRESULT layoutGridMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDMODE), displaybind, bindable] HRESULT layoutGridMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDTYPE), displaybind, bindable] HRESULT layoutGridType ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDTYPE), displaybind, bindable] HRESULT layoutGridType ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRID), displaybind, bindable, nonbrowsable] HRESULT layoutGrid ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRID), displaybind, bindable, nonbrowsable] HRESULT layoutGrid ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTAUTOSPACE), displaybind, bindable] HRESULT textAutospace ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTAUTOSPACE), displaybind, bindable] HRESULT textAutospace ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDBREAK), displaybind, bindable] HRESULT wordBreak ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDBREAK), displaybind, bindable] HRESULT wordBreak ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LINEBREAK), displaybind, bindable] HRESULT lineBreak ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LINEBREAK), displaybind, bindable] HRESULT lineBreak ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFY), displaybind, bindable] HRESULT textJustify ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFY), displaybind, bindable] HRESULT textJustify ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFYTRIM), displaybind, bindable] HRESULT textJustifyTrim ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFYTRIM), displaybind, bindable] HRESULT textJustifyTrim ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDA), displaybind, bindable] HRESULT textKashida ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDA), displaybind, bindable] HRESULT textKashida ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWX), displaybind, bindable] HRESULT overflowX ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWX), displaybind, bindable] HRESULT overflowX ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWY), displaybind, bindable] HRESULT overflowY ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWY), displaybind, bindable] HRESULT overflowY ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ACCELERATOR), displaybind, bindable] HRESULT accelerator ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ACCELERATOR), displaybind, bindable] HRESULT accelerator ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTFLOW), displaybind, bindable] HRESULT layoutFlow ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTFLOW), displaybind, bindable] HRESULT layoutFlow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ZOOM), displaybind, bindable] HRESULT zoom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ZOOM), displaybind, bindable] HRESULT zoom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDWRAP), displaybind, bindable] HRESULT wordWrap ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDWRAP), displaybind, bindable] HRESULT wordWrap ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTUNDERLINEPOSITION), displaybind, bindable] HRESULT textUnderlinePosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTUNDERLINEPOSITION), displaybind, bindable] HRESULT textUnderlinePosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARBASECOLOR), displaybind, bindable] HRESULT scrollbarBaseColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARBASECOLOR), displaybind, bindable] HRESULT scrollbarBaseColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARFACECOLOR), displaybind, bindable] HRESULT scrollbarFaceColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARFACECOLOR), displaybind, bindable] HRESULT scrollbarFaceColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] HRESULT scrollbar3dLightColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] HRESULT scrollbar3dLightColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarShadowColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarShadowColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] HRESULT scrollbarHighlightColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] HRESULT scrollbarHighlightColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarDarkShadowColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarDarkShadowColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARARROWCOLOR), displaybind, bindable] HRESULT scrollbarArrowColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARARROWCOLOR), displaybind, bindable] HRESULT scrollbarArrowColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARTRACKCOLOR), displaybind, bindable] HRESULT scrollbarTrackColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARTRACKCOLOR), displaybind, bindable] HRESULT scrollbarTrackColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WRITINGMODE), displaybind, bindable] HRESULT writingMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WRITINGMODE), displaybind, bindable] HRESULT writingMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGNLAST), displaybind, bindable] HRESULT textAlignLast ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGNLAST), displaybind, bindable] HRESULT textAlignLast ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDASPACE), displaybind, bindable] HRESULT textKashidaSpace ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDASPACE), displaybind, bindable] HRESULT textKashidaSpace ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTOVERFLOW), displaybind, bindable] HRESULT textOverflow ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTOVERFLOW), displaybind, bindable] HRESULT textOverflow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MINHEIGHT), displaybind, bindable] HRESULT minHeight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MINHEIGHT), displaybind, bindable] HRESULT minHeight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSINTERPOLATIONMODE), displaybind, bindable] HRESULT msInterpolationMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSINTERPOLATIONMODE), displaybind, bindable] HRESULT msInterpolationMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MAXHEIGHT), displaybind, bindable] HRESULT maxHeight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MAXHEIGHT), displaybind, bindable] HRESULT maxHeight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MINWIDTH), displaybind, bindable] HRESULT minWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MINWIDTH), displaybind, bindable] HRESULT minWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MAXWIDTH), displaybind, bindable] HRESULT maxWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MAXWIDTH), displaybind, bindable] HRESULT maxWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CONTENT), displaybind, bindable] HRESULT content ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CONTENT), displaybind, bindable] HRESULT content ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CAPTIONSIDE), displaybind, bindable] HRESULT captionSide ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CAPTIONSIDE), displaybind, bindable] HRESULT captionSide ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERINCREMENT), displaybind, bindable] HRESULT counterIncrement ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERINCREMENT), displaybind, bindable] HRESULT counterIncrement ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERRESET), displaybind, bindable] HRESULT counterReset ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERRESET), displaybind, bindable] HRESULT counterReset ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINE), displaybind, bindable] HRESULT outline ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINE), displaybind, bindable] HRESULT outline ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINEWIDTH), displaybind, bindable] HRESULT outlineWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINEWIDTH), displaybind, bindable] HRESULT outlineWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINESTYLE), displaybind, bindable] HRESULT outlineStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINESTYLE), displaybind, bindable] HRESULT outlineStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINECOLOR), displaybind, bindable] HRESULT outlineColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINECOLOR), displaybind, bindable] HRESULT outlineColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOXSIZING), displaybind, bindable] HRESULT boxSizing ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOXSIZING), displaybind, bindable] HRESULT boxSizing ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSPACING), displaybind, bindable] HRESULT borderSpacing ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSPACING), displaybind, bindable] HRESULT borderSpacing ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ORPHANS), displaybind, bindable] HRESULT orphans ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ORPHANS), displaybind, bindable] HRESULT orphans ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WIDOWS), displaybind, bindable] HRESULT widows ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WIDOWS), displaybind, bindable] HRESULT widows ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKINSIDE), displaybind, bindable] HRESULT pageBreakInside ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKINSIDE), displaybind, bindable] HRESULT pageBreakInside ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_EMPTYCELLS), displaybind, bindable] HRESULT emptyCells ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_EMPTYCELLS), displaybind, bindable] HRESULT emptyCells ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSBLOCKPROGRESSION), displaybind, bindable] HRESULT msBlockProgression ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSBLOCKPROGRESSION), displaybind, bindable] HRESULT msBlockProgression ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_QUOTES), displaybind, bindable] HRESULT quotes ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_QUOTES), displaybind, bindable] HRESULT quotes ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ALIGNMENTBASELINE), displaybind, bindable] HRESULT alignmentBaseline ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ALIGNMENTBASELINE), displaybind, bindable] HRESULT alignmentBaseline ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BASELINESHIFT), displaybind, bindable] HRESULT baselineShift ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BASELINESHIFT), displaybind, bindable] HRESULT baselineShift ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_DOMINANTBASELINE), displaybind, bindable] HRESULT dominantBaseline ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_DOMINANTBASELINE), displaybind, bindable] HRESULT dominantBaseline ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZEADJUST), displaybind, bindable] HRESULT fontSizeAdjust ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZEADJUST), displaybind, bindable] HRESULT fontSizeAdjust ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTRETCH), displaybind, bindable] HRESULT fontStretch ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTRETCH), displaybind, bindable] HRESULT fontStretch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OPACITY), displaybind, bindable] HRESULT opacity ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OPACITY), displaybind, bindable] HRESULT opacity ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPPATH), displaybind, bindable] HRESULT clipPath ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPPATH), displaybind, bindable] HRESULT clipPath ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRULE), displaybind, bindable] HRESULT clipRule ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRULE), displaybind, bindable] HRESULT clipRule ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILL), displaybind, bindable] HRESULT fill ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILL), displaybind, bindable] HRESULT fill ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILLOPACITY), displaybind, bindable] HRESULT fillOpacity ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILLOPACITY), displaybind, bindable] HRESULT fillOpacity ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILLRULE), displaybind, bindable] HRESULT fillRule ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILLRULE), displaybind, bindable] HRESULT fillRule ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_KERNING), displaybind, bindable] HRESULT kerning ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_KERNING), displaybind, bindable] HRESULT kerning ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKER), displaybind, bindable] HRESULT marker ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKER), displaybind, bindable] HRESULT marker ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKEREND), displaybind, bindable] HRESULT markerEnd ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKEREND), displaybind, bindable] HRESULT markerEnd ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKERMID), displaybind, bindable] HRESULT markerMid ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKERMID), displaybind, bindable] HRESULT markerMid ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKERSTART), displaybind, bindable] HRESULT markerStart ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKERSTART), displaybind, bindable] HRESULT markerStart ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MASK), displaybind, bindable] HRESULT mask ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MASK), displaybind, bindable] HRESULT mask ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_POINTEREVENTS), displaybind, bindable] HRESULT pointerEvents ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_POINTEREVENTS), displaybind, bindable] HRESULT pointerEvents ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STOPCOLOR), displaybind, bindable] HRESULT stopColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STOPCOLOR), displaybind, bindable] HRESULT stopColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STOPOPACITY), displaybind, bindable] HRESULT stopOpacity ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STOPOPACITY), displaybind, bindable] HRESULT stopOpacity ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKE), displaybind, bindable] HRESULT stroke ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKE), displaybind, bindable] HRESULT stroke ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHARRAY), displaybind, bindable] HRESULT strokeDasharray ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHARRAY), displaybind, bindable] HRESULT strokeDasharray ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHOFFSET), displaybind, bindable] HRESULT strokeDashoffset ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHOFFSET), displaybind, bindable] HRESULT strokeDashoffset ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINECAP), displaybind, bindable] HRESULT strokeLinecap ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINECAP), displaybind, bindable] HRESULT strokeLinecap ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINEJOIN), displaybind, bindable] HRESULT strokeLinejoin ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINEJOIN), displaybind, bindable] HRESULT strokeLinejoin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEMITERLIMIT), displaybind, bindable] HRESULT strokeMiterlimit ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEMITERLIMIT), displaybind, bindable] HRESULT strokeMiterlimit ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEOPACITY), displaybind, bindable] HRESULT strokeOpacity ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEOPACITY), displaybind, bindable] HRESULT strokeOpacity ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEWIDTH), displaybind, bindable] HRESULT strokeWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEWIDTH), displaybind, bindable] HRESULT strokeWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTANCHOR), displaybind, bindable] HRESULT textAnchor ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTANCHOR), displaybind, bindable] HRESULT textAnchor ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONHORIZONTAL), displaybind, bindable] HRESULT glyphOrientationHorizontal ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONHORIZONTAL), displaybind, bindable] HRESULT glyphOrientationHorizontal ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONVERTICAL), displaybind, bindable] HRESULT glyphOrientationVertical ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONVERTICAL), displaybind, bindable] HRESULT glyphOrientationVertical ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRADIUS), displaybind, bindable] HRESULT borderRadius ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRADIUS), displaybind, bindable] HRESULT borderRadius ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPLEFTRADIUS), displaybind, bindable] HRESULT borderTopLeftRadius ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPLEFTRADIUS), displaybind, bindable] HRESULT borderTopLeftRadius ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPRIGHTRADIUS), displaybind, bindable] HRESULT borderTopRightRadius ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPRIGHTRADIUS), displaybind, bindable] HRESULT borderTopRightRadius ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMRIGHTRADIUS), displaybind, bindable] HRESULT borderBottomRightRadius ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMRIGHTRADIUS), displaybind, bindable] HRESULT borderBottomRightRadius ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMLEFTRADIUS), displaybind, bindable] HRESULT borderBottomLeftRadius ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMLEFTRADIUS), displaybind, bindable] HRESULT borderBottomLeftRadius ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPTOP), displaybind, bindable, hidden] HRESULT clipTop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPTOP), displaybind, bindable, hidden] HRESULT clipTop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRIGHT), displaybind, bindable, hidden] HRESULT clipRight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRIGHT), displaybind, bindable, hidden] HRESULT clipRight ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPBOTTOM), displaybind, bindable, hidden] HRESULT clipBottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPLEFT), displaybind, bindable, hidden] HRESULT clipLeft ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPLEFT), displaybind, bindable, hidden] HRESULT clipLeft ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CSSFLOAT), displaybind, bindable] HRESULT cssFloat ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CSSFLOAT), displaybind, bindable] HRESULT cssFloat ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCLIP), displaybind, bindable] HRESULT backgroundClip ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCLIP), displaybind, bindable] HRESULT backgroundClip ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDORIGIN), displaybind, bindable] HRESULT backgroundOrigin ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDORIGIN), displaybind, bindable] HRESULT backgroundOrigin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDSIZE), displaybind, bindable] HRESULT backgroundSize ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDSIZE), displaybind, bindable] HRESULT backgroundSize ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOXSHADOW), displaybind, bindable] HRESULT boxShadow ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOXSHADOW), displaybind, bindable] HRESULT boxShadow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORM), displaybind, bindable] HRESULT msTransform ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORM), displaybind, bindable] HRESULT msTransform ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORMORIGIN), displaybind, bindable] HRESULT msTransformOrigin ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORMORIGIN), displaybind, bindable] HRESULT msTransformOrigin ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305107d1-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLCSSStyleDeclaration2 : IDispatch {
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLCHAINING), displaybind, bindable] HRESULT msScrollChaining ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLCHAINING), displaybind, bindable] HRESULT msScrollChaining ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable] HRESULT msContentZooming ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable] HRESULT msContentZooming ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable] HRESULT msContentZoomSnapType ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable] HRESULT msContentZoomSnapType ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable] HRESULT msScrollRails ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable] HRESULT msScrollRails ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable] HRESULT msContentZoomChaining ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable] HRESULT msContentZoomChaining ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable] HRESULT msScrollSnapType ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable] HRESULT msScrollSnapType ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable] HRESULT msContentZoomLimit ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable] HRESULT msContentZoomLimit ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable] HRESULT msContentZoomSnap ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable] HRESULT msContentZoomSnap ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable] HRESULT msContentZoomSnapPoints ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable] HRESULT msContentZoomSnapPoints ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable] HRESULT msContentZoomLimitMin ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable] HRESULT msContentZoomLimitMin ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable] HRESULT msContentZoomLimitMax ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable] HRESULT msContentZoomLimitMax ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable] HRESULT msScrollSnapX ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable] HRESULT msScrollSnapX ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable] HRESULT msScrollSnapY ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable] HRESULT msScrollSnapY ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable] HRESULT msScrollSnapPointsX ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable] HRESULT msScrollSnapPointsX ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable] HRESULT msScrollSnapPointsY ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable] HRESULT msScrollSnapPointsY ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable] HRESULT msGridColumn ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable] HRESULT msGridColumn ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable] HRESULT msGridColumnAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable] HRESULT msGridColumnAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable] HRESULT msGridColumns ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable] HRESULT msGridColumns ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable] HRESULT msGridColumnSpan ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable] HRESULT msGridColumnSpan ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable] HRESULT msGridRow ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable] HRESULT msGridRow ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable] HRESULT msGridRowAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable] HRESULT msGridRowAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable] HRESULT msGridRows ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable] HRESULT msGridRows ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable] HRESULT msGridRowSpan ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable] HRESULT msGridRowSpan ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable] HRESULT msWrapThrough ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable] HRESULT msWrapThrough ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable] HRESULT msWrapMargin ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable] HRESULT msWrapMargin ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable] HRESULT msWrapFlow ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable] HRESULT msWrapFlow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable] HRESULT msAnimationName ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable] HRESULT msAnimationName ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable] HRESULT msAnimationDuration ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable] HRESULT msAnimationDuration ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable] HRESULT msAnimationTimingFunction ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable] HRESULT msAnimationTimingFunction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable] HRESULT msAnimationDelay ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable] HRESULT msAnimationDelay ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable] HRESULT msAnimationDirection ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable] HRESULT msAnimationDirection ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable] HRESULT msAnimationPlayState ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable] HRESULT msAnimationPlayState ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable] HRESULT msAnimationIterationCount ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable] HRESULT msAnimationIterationCount ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable] HRESULT msAnimation ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable] HRESULT msAnimation ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable] HRESULT msAnimationFillMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable] HRESULT msAnimationFillMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable] HRESULT colorInterpolationFilters ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable] HRESULT colorInterpolationFilters ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable] HRESULT columnCount ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable] HRESULT columnCount ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable] HRESULT columnWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable] HRESULT columnWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable] HRESULT columnGap ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable] HRESULT columnGap ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable] HRESULT columnFill ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable] HRESULT columnFill ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable] HRESULT columnSpan ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable] HRESULT columnSpan ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNS), displaybind, bindable, nonbrowsable] HRESULT columns ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNS), displaybind, bindable, nonbrowsable] HRESULT columns ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable] HRESULT columnRule ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable] HRESULT columnRule ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable] HRESULT columnRuleColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable] HRESULT columnRuleColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable] HRESULT columnRuleStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable] HRESULT columnRuleStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable] HRESULT columnRuleWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable] HRESULT columnRuleWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable] HRESULT breakBefore ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable] HRESULT breakBefore ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable] HRESULT breakAfter ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable] HRESULT breakAfter ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable] HRESULT breakInside ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable] HRESULT breakInside ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable] HRESULT floodColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable] HRESULT floodColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable] HRESULT floodOpacity ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable] HRESULT floodOpacity ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable] HRESULT lightingColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable] HRESULT lightingColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable] HRESULT msScrollLimitXMin ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable] HRESULT msScrollLimitXMin ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable] HRESULT msScrollLimitYMin ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable] HRESULT msScrollLimitYMin ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable] HRESULT msScrollLimitXMax ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable] HRESULT msScrollLimitXMax ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable] HRESULT msScrollLimitYMax ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable] HRESULT msScrollLimitYMax ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable] HRESULT msScrollLimit ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable] HRESULT msScrollLimit ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable] HRESULT textShadow ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable] HRESULT textShadow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable] HRESULT msFlowFrom ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable] HRESULT msFlowFrom ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable] HRESULT msFlowInto ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable] HRESULT msFlowInto ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable] HRESULT msHyphens ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable] HRESULT msHyphens ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable] HRESULT msHyphenateLimitZone ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable] HRESULT msHyphenateLimitZone ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable] HRESULT msHyphenateLimitChars ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable] HRESULT msHyphenateLimitChars ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable] HRESULT msHyphenateLimitLines ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable] HRESULT msHyphenateLimitLines ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable] HRESULT msHighContrastAdjust ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable] HRESULT msHighContrastAdjust ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable] HRESULT enableBackground ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable] HRESULT enableBackground ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable] HRESULT msFontFeatureSettings ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable] HRESULT msFontFeatureSettings ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable] HRESULT msUserSelect ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable] HRESULT msUserSelect ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable] HRESULT msOverflowStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable] HRESULT msOverflowStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable] HRESULT msTransformStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable] HRESULT msTransformStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable] HRESULT msBackfaceVisibility ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable] HRESULT msBackfaceVisibility ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable] HRESULT msPerspective ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable] HRESULT msPerspective ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable] HRESULT msPerspectiveOrigin ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable] HRESULT msPerspectiveOrigin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable] HRESULT msTransitionProperty ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable] HRESULT msTransitionProperty ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable] HRESULT msTransitionDuration ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable] HRESULT msTransitionDuration ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable] HRESULT msTransitionTimingFunction ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable] HRESULT msTransitionTimingFunction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable] HRESULT msTransitionDelay ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable] HRESULT msTransitionDelay ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable] HRESULT msTransition ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable] HRESULT msTransition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable] HRESULT msTouchAction ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable] HRESULT msTouchAction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable] HRESULT msScrollTranslation ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable] HRESULT msScrollTranslation ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable] HRESULT msFlex ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable] HRESULT msFlex ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable] HRESULT msFlexPositive ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable] HRESULT msFlexPositive ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable] HRESULT msFlexNegative ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable] HRESULT msFlexNegative ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable] HRESULT msFlexPreferredSize ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable] HRESULT msFlexPreferredSize ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable] HRESULT msFlexFlow ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable] HRESULT msFlexFlow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable] HRESULT msFlexDirection ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable] HRESULT msFlexDirection ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable] HRESULT msFlexWrap ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable] HRESULT msFlexWrap ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable] HRESULT msFlexAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable] HRESULT msFlexAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable] HRESULT msFlexItemAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable] HRESULT msFlexItemAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable] HRESULT msFlexPack ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable] HRESULT msFlexPack ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable] HRESULT msFlexLinePack ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable] HRESULT msFlexLinePack ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable] HRESULT msFlexOrder ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable] HRESULT msFlexOrder ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable] HRESULT msTouchSelect ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable] HRESULT msTouchSelect ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable] HRESULT transform ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable] HRESULT transform ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable] HRESULT transformOrigin ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable] HRESULT transformOrigin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable] HRESULT transformStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable] HRESULT transformStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable] HRESULT backfaceVisibility ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable] HRESULT backfaceVisibility ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable] HRESULT perspective ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable] HRESULT perspective ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable] HRESULT perspectiveOrigin ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable] HRESULT perspectiveOrigin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable] HRESULT transitionProperty ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable] HRESULT transitionProperty ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable] HRESULT transitionDuration ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable] HRESULT transitionDuration ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable] HRESULT transitionTimingFunction ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable] HRESULT transitionTimingFunction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable] HRESULT transitionDelay ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable] HRESULT transitionDelay ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable] HRESULT transition ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable] HRESULT transition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable] HRESULT fontFeatureSettings ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable] HRESULT fontFeatureSettings ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable] HRESULT animationName ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable] HRESULT animationName ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable] HRESULT animationDuration ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable] HRESULT animationDuration ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable] HRESULT animationTimingFunction ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable] HRESULT animationTimingFunction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable] HRESULT animationDelay ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable] HRESULT animationDelay ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable] HRESULT animationDirection ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable] HRESULT animationDirection ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable] HRESULT animationPlayState ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable] HRESULT animationPlayState ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable] HRESULT animationIterationCount ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable] HRESULT animationIterationCount ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), displaybind, bindable] HRESULT animation ([in] BSTR v);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), propget, displaybind, bindable] HRESULT animation ([retval, out] BSTR *p);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), propput, displaybind, bindable] HRESULT animationFillMode ([in] BSTR v);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), propget, displaybind, bindable] HRESULT animationFillMode ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (305104c2-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLStyleEnabled : IDispatch {
    [id (DISPID_IHTMLSTYLEENABLED_MSGETPROPERTYENABLED)] HRESULT msGetPropertyEnabled ([in] BSTR name,[retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLSTYLEENABLED_MSPUTPROPERTYENABLED)] HRESULT msPutPropertyEnabled ([in] BSTR name,[in] VARIANT_BOOL b);
  };

  [hidden, uuid (3059009a-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLCSSStyleDeclaration {
    properties:
    methods:
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_LENGTH), propget] long length ();
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_PARENTRULE), propget] VARIANT parentRule ();
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYVALUE)] BSTR getPropertyValue ([in] BSTR bstrPropertyName);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYPRIORITY)] BSTR getPropertyPriority ([in] BSTR bstrPropertyName);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_REMOVEPROPERTY)] BSTR removeProperty ([in] BSTR bstrPropertyName);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_SETPROPERTY)] void setProperty ([in] BSTR bstrPropertyName,[in] VARIANT *pvarPropertyValue,[defaultvalue (NULL), in] VARIANT *pvarPropertyPriority);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_ITEM)] BSTR item ([in] long index);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTFAMILY), displaybind, bindable] void fontFamily (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTFAMILY), displaybind, bindable] BSTR fontFamily ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTYLE), displaybind, bindable] void fontStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTYLE), displaybind, bindable] BSTR fontStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTVARIANT), displaybind, bindable] void fontVariant (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTVARIANT), displaybind, bindable] BSTR fontVariant ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTWEIGHT), displaybind, bindable] void fontWeight (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTWEIGHT), displaybind, bindable] BSTR fontWeight ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZE), displaybind, bindable] void fontSize (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZE), displaybind, bindable] VARIANT fontSize ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONT), displaybind, bindable, nonbrowsable] void font (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONT), displaybind, bindable, nonbrowsable] BSTR font ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_COLOR), displaybind, bindable] void color (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_COLOR), displaybind, bindable] VARIANT color ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUND), displaybind, bindable, nonbrowsable] void background (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUND), displaybind, bindable, nonbrowsable] BSTR background ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCOLOR), displaybind, bindable] void backgroundColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCOLOR), displaybind, bindable] VARIANT backgroundColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDIMAGE), displaybind, bindable] void backgroundImage (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDIMAGE), displaybind, bindable] BSTR backgroundImage ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDREPEAT), displaybind, bindable] void backgroundRepeat (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDREPEAT), displaybind, bindable] BSTR backgroundRepeat ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDATTACHMENT), displaybind, bindable] void backgroundAttachment (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDATTACHMENT), displaybind, bindable] BSTR backgroundAttachment ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITION), displaybind, bindable] void backgroundPosition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITION), displaybind, bindable] BSTR backgroundPosition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONX), displaybind, bindable] void backgroundPositionX (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONX), displaybind, bindable] VARIANT backgroundPositionX ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONY), displaybind, bindable] void backgroundPositionY (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONY), displaybind, bindable] VARIANT backgroundPositionY ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDSPACING), displaybind, bindable] void wordSpacing (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDSPACING), displaybind, bindable] VARIANT wordSpacing ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LETTERSPACING), displaybind, bindable] void letterSpacing (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LETTERSPACING), displaybind, bindable] VARIANT letterSpacing ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTDECORATION), displaybind, bindable] void textDecoration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTDECORATION), displaybind, bindable] BSTR textDecoration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_VERTICALALIGN), displaybind, bindable] void verticalAlign (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_VERTICALALIGN), displaybind, bindable] VARIANT verticalAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTTRANSFORM), displaybind, bindable] void textTransform (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTTRANSFORM), displaybind, bindable] BSTR textTransform ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGN), displaybind, bindable] void textAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGN), displaybind, bindable] BSTR textAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTINDENT), displaybind, bindable] void textIndent (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTINDENT), displaybind, bindable] VARIANT textIndent ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LINEHEIGHT), displaybind, bindable] void lineHeight (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LINEHEIGHT), displaybind, bindable] VARIANT lineHeight ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINTOP), displaybind, bindable] void marginTop (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINTOP), displaybind, bindable] VARIANT marginTop ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINRIGHT), displaybind, bindable] void marginRight (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINRIGHT), displaybind, bindable] VARIANT marginRight ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINBOTTOM), displaybind, bindable] void marginBottom (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINBOTTOM), displaybind, bindable] VARIANT marginBottom ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINLEFT), displaybind, bindable] void marginLeft (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINLEFT), displaybind, bindable] VARIANT marginLeft ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGIN), displaybind, bindable, nonbrowsable] void margin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGIN), displaybind, bindable, nonbrowsable] BSTR margin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGTOP), displaybind, bindable] void paddingTop (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGTOP), displaybind, bindable] VARIANT paddingTop ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGRIGHT), displaybind, bindable] void paddingRight (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGRIGHT), displaybind, bindable] VARIANT paddingRight ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGBOTTOM), displaybind, bindable] void paddingBottom (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGBOTTOM), displaybind, bindable] VARIANT paddingBottom ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGLEFT), displaybind, bindable] void paddingLeft (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGLEFT), displaybind, bindable] VARIANT paddingLeft ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDING), displaybind, bindable, nonbrowsable] void padding (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDING), displaybind, bindable, nonbrowsable] BSTR padding ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDER), displaybind, bindable, nonbrowsable] void border (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDER), displaybind, bindable, nonbrowsable] BSTR border ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOP), displaybind, bindable] void borderTop (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOP), displaybind, bindable] BSTR borderTop ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHT), displaybind, bindable] void borderRight (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHT), displaybind, bindable] BSTR borderRight ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOM), displaybind, bindable] void borderBottom (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOM), displaybind, bindable] BSTR borderBottom ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFT), displaybind, bindable] void borderLeft (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFT), displaybind, bindable] BSTR borderLeft ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLOR), displaybind, bindable] void borderColor (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLOR), displaybind, bindable] BSTR borderColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPCOLOR), displaybind, bindable] void borderTopColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPCOLOR), displaybind, bindable] VARIANT borderTopColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTCOLOR), displaybind, bindable] void borderRightColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTCOLOR), displaybind, bindable] VARIANT borderRightColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMCOLOR), displaybind, bindable] void borderBottomColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMCOLOR), displaybind, bindable] VARIANT borderBottomColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTCOLOR), displaybind, bindable] void borderLeftColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTCOLOR), displaybind, bindable] VARIANT borderLeftColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERWIDTH), displaybind, bindable] void borderWidth (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERWIDTH), displaybind, bindable] BSTR borderWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPWIDTH), displaybind, bindable] void borderTopWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPWIDTH), displaybind, bindable] VARIANT borderTopWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTWIDTH), displaybind, bindable] void borderRightWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTWIDTH), displaybind, bindable] VARIANT borderRightWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMWIDTH), displaybind, bindable] void borderBottomWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMWIDTH), displaybind, bindable] VARIANT borderBottomWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTWIDTH), displaybind, bindable] void borderLeftWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTWIDTH), displaybind, bindable] VARIANT borderLeftWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSTYLE), displaybind, bindable] void borderStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSTYLE), displaybind, bindable] BSTR borderStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPSTYLE), displaybind, bindable] void borderTopStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPSTYLE), displaybind, bindable] BSTR borderTopStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTSTYLE), displaybind, bindable] void borderRightStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTSTYLE), displaybind, bindable] BSTR borderRightStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMSTYLE), displaybind, bindable] void borderBottomStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMSTYLE), displaybind, bindable] BSTR borderBottomStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTSTYLE), displaybind, bindable] void borderLeftStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTSTYLE), displaybind, bindable] BSTR borderLeftStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WIDTH), displaybind, bindable] void width (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WIDTH), displaybind, bindable] VARIANT width ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_HEIGHT), displaybind, bindable] void height (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_HEIGHT), displaybind, bindable] VARIANT height ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STYLEFLOAT), displaybind, bindable] void styleFloat (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STYLEFLOAT), displaybind, bindable] BSTR styleFloat ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLEAR), displaybind, bindable] void clear (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLEAR), displaybind, bindable] BSTR clear ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_DISPLAY), displaybind, bindable] void display (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_DISPLAY), displaybind, bindable] BSTR display ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_VISIBILITY), displaybind, bindable] void visibility (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_VISIBILITY), displaybind, bindable] BSTR visibility ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLETYPE), displaybind, bindable] void listStyleType (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLETYPE), displaybind, bindable] BSTR listStyleType ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEPOSITION), displaybind, bindable] void listStylePosition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEPOSITION), displaybind, bindable] BSTR listStylePosition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEIMAGE), displaybind, bindable] void listStyleImage (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEIMAGE), displaybind, bindable] BSTR listStyleImage ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLE), displaybind, bindable, nonbrowsable] void listStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLE), displaybind, bindable, nonbrowsable] BSTR listStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WHITESPACE), displaybind, bindable] void whiteSpace (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WHITESPACE), displaybind, bindable] BSTR whiteSpace ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TOP), displaybind, bindable] void top (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TOP), displaybind, bindable] VARIANT top ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LEFT), displaybind, bindable] void left (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LEFT), displaybind, bindable] VARIANT left ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ZINDEX), displaybind, bindable] void zIndex (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ZINDEX), displaybind, bindable] VARIANT zIndex ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOW), displaybind, bindable] void overflow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOW), displaybind, bindable] BSTR overflow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKBEFORE), displaybind, bindable] void pageBreakBefore (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKBEFORE), displaybind, bindable] BSTR pageBreakBefore ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKAFTER), displaybind, bindable] void pageBreakAfter (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKAFTER), displaybind, bindable] BSTR pageBreakAfter ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CSSTEXT), displaybind, bindable, nonbrowsable] void cssText (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CSSTEXT), displaybind, bindable, nonbrowsable] BSTR cssText ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CURSOR), displaybind, bindable] void cursor (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CURSOR), displaybind, bindable] BSTR cursor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIP), displaybind, bindable] void clip (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIP), displaybind, bindable] BSTR clip ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILTER), displaybind, bindable] void filter (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILTER), displaybind, bindable] BSTR filter ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TABLELAYOUT), displaybind, bindable] void tableLayout (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TABLELAYOUT), displaybind, bindable] BSTR tableLayout ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLLAPSE), displaybind, bindable] void borderCollapse (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLLAPSE), displaybind, bindable] BSTR borderCollapse ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_DIRECTION), displaybind, bindable] void direction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_DIRECTION), displaybind, bindable] BSTR direction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BEHAVIOR), displaybind, bindable] void behavior (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BEHAVIOR), displaybind, bindable] BSTR behavior ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_POSITION), displaybind, bindable] void position (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_POSITION), displaybind, bindable] BSTR position ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_UNICODEBIDI), displaybind, bindable] void unicodeBidi (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_UNICODEBIDI), displaybind, bindable] BSTR unicodeBidi ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOTTOM), displaybind, bindable] void bottom (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOTTOM), displaybind, bindable] VARIANT bottom ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_RIGHT), displaybind, bindable] void right (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_RIGHT), displaybind, bindable] VARIANT right ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_IMEMODE), displaybind, bindable] void imeMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_IMEMODE), displaybind, bindable] BSTR imeMode ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYALIGN), displaybind, bindable] void rubyAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYALIGN), displaybind, bindable] BSTR rubyAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYPOSITION), displaybind, bindable] void rubyPosition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYPOSITION), displaybind, bindable] BSTR rubyPosition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYOVERHANG), displaybind, bindable] void rubyOverhang (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYOVERHANG), displaybind, bindable] BSTR rubyOverhang ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDCHAR), displaybind, bindable] void layoutGridChar (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDCHAR), displaybind, bindable] VARIANT layoutGridChar ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDLINE), displaybind, bindable] void layoutGridLine (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDLINE), displaybind, bindable] VARIANT layoutGridLine ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDMODE), displaybind, bindable] void layoutGridMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDMODE), displaybind, bindable] BSTR layoutGridMode ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDTYPE), displaybind, bindable] void layoutGridType (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDTYPE), displaybind, bindable] BSTR layoutGridType ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRID), displaybind, bindable, nonbrowsable] void layoutGrid (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRID), displaybind, bindable, nonbrowsable] BSTR layoutGrid ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTAUTOSPACE), displaybind, bindable] void textAutospace (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTAUTOSPACE), displaybind, bindable] BSTR textAutospace ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDBREAK), displaybind, bindable] void wordBreak (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDBREAK), displaybind, bindable] BSTR wordBreak ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LINEBREAK), displaybind, bindable] void lineBreak (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LINEBREAK), displaybind, bindable] BSTR lineBreak ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFY), displaybind, bindable] void textJustify (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFY), displaybind, bindable] BSTR textJustify ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFYTRIM), displaybind, bindable] void textJustifyTrim (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFYTRIM), displaybind, bindable] BSTR textJustifyTrim ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDA), displaybind, bindable] void textKashida (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDA), displaybind, bindable] VARIANT textKashida ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWX), displaybind, bindable] void overflowX (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWX), displaybind, bindable] BSTR overflowX ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWY), displaybind, bindable] void overflowY (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWY), displaybind, bindable] BSTR overflowY ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ACCELERATOR), displaybind, bindable] void accelerator (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ACCELERATOR), displaybind, bindable] BSTR accelerator ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTFLOW), displaybind, bindable] void layoutFlow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTFLOW), displaybind, bindable] BSTR layoutFlow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ZOOM), displaybind, bindable] void zoom (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ZOOM), displaybind, bindable] VARIANT zoom ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDWRAP), displaybind, bindable] void wordWrap (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDWRAP), displaybind, bindable] BSTR wordWrap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTUNDERLINEPOSITION), displaybind, bindable] void textUnderlinePosition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTUNDERLINEPOSITION), displaybind, bindable] BSTR textUnderlinePosition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARBASECOLOR), displaybind, bindable] void scrollbarBaseColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARBASECOLOR), displaybind, bindable] VARIANT scrollbarBaseColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARFACECOLOR), displaybind, bindable] void scrollbarFaceColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARFACECOLOR), displaybind, bindable] VARIANT scrollbarFaceColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] void scrollbar3dLightColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] VARIANT scrollbar3dLightColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARSHADOWCOLOR), displaybind, bindable] void scrollbarShadowColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARSHADOWCOLOR), displaybind, bindable] VARIANT scrollbarShadowColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] void scrollbarHighlightColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] VARIANT scrollbarHighlightColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] void scrollbarDarkShadowColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] VARIANT scrollbarDarkShadowColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARARROWCOLOR), displaybind, bindable] void scrollbarArrowColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARARROWCOLOR), displaybind, bindable] VARIANT scrollbarArrowColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARTRACKCOLOR), displaybind, bindable] void scrollbarTrackColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARTRACKCOLOR), displaybind, bindable] VARIANT scrollbarTrackColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WRITINGMODE), displaybind, bindable] void writingMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WRITINGMODE), displaybind, bindable] BSTR writingMode ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGNLAST), displaybind, bindable] void textAlignLast (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGNLAST), displaybind, bindable] BSTR textAlignLast ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDASPACE), displaybind, bindable] void textKashidaSpace (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDASPACE), displaybind, bindable] VARIANT textKashidaSpace ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTOVERFLOW), displaybind, bindable] void textOverflow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTOVERFLOW), displaybind, bindable] BSTR textOverflow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MINHEIGHT), displaybind, bindable] void minHeight (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MINHEIGHT), displaybind, bindable] VARIANT minHeight ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSINTERPOLATIONMODE), displaybind, bindable] void msInterpolationMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSINTERPOLATIONMODE), displaybind, bindable] BSTR msInterpolationMode ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MAXHEIGHT), displaybind, bindable] void maxHeight (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MAXHEIGHT), displaybind, bindable] VARIANT maxHeight ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MINWIDTH), displaybind, bindable] void minWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MINWIDTH), displaybind, bindable] VARIANT minWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MAXWIDTH), displaybind, bindable] void maxWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MAXWIDTH), displaybind, bindable] VARIANT maxWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CONTENT), displaybind, bindable] void content (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CONTENT), displaybind, bindable] BSTR content ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CAPTIONSIDE), displaybind, bindable] void captionSide (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CAPTIONSIDE), displaybind, bindable] BSTR captionSide ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERINCREMENT), displaybind, bindable] void counterIncrement (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERINCREMENT), displaybind, bindable] BSTR counterIncrement ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERRESET), displaybind, bindable] void counterReset (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERRESET), displaybind, bindable] BSTR counterReset ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINE), displaybind, bindable] void outline (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINE), displaybind, bindable] BSTR outline ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINEWIDTH), displaybind, bindable] void outlineWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINEWIDTH), displaybind, bindable] VARIANT outlineWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINESTYLE), displaybind, bindable] void outlineStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINESTYLE), displaybind, bindable] BSTR outlineStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINECOLOR), displaybind, bindable] void outlineColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINECOLOR), displaybind, bindable] VARIANT outlineColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOXSIZING), displaybind, bindable] void boxSizing (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOXSIZING), displaybind, bindable] BSTR boxSizing ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSPACING), displaybind, bindable] void borderSpacing (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSPACING), displaybind, bindable] BSTR borderSpacing ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ORPHANS), displaybind, bindable] void orphans (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ORPHANS), displaybind, bindable] VARIANT orphans ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WIDOWS), displaybind, bindable] void widows (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WIDOWS), displaybind, bindable] VARIANT widows ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKINSIDE), displaybind, bindable] void pageBreakInside (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKINSIDE), displaybind, bindable] BSTR pageBreakInside ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_EMPTYCELLS), displaybind, bindable] void emptyCells (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_EMPTYCELLS), displaybind, bindable] BSTR emptyCells ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSBLOCKPROGRESSION), displaybind, bindable] void msBlockProgression (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSBLOCKPROGRESSION), displaybind, bindable] BSTR msBlockProgression ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_QUOTES), displaybind, bindable] void quotes (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_QUOTES), displaybind, bindable] BSTR quotes ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ALIGNMENTBASELINE), displaybind, bindable] void alignmentBaseline (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ALIGNMENTBASELINE), displaybind, bindable] BSTR alignmentBaseline ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BASELINESHIFT), displaybind, bindable] void baselineShift (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BASELINESHIFT), displaybind, bindable] VARIANT baselineShift ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_DOMINANTBASELINE), displaybind, bindable] void dominantBaseline (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_DOMINANTBASELINE), displaybind, bindable] BSTR dominantBaseline ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZEADJUST), displaybind, bindable] void fontSizeAdjust (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZEADJUST), displaybind, bindable] VARIANT fontSizeAdjust ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTRETCH), displaybind, bindable] void fontStretch (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTRETCH), displaybind, bindable] BSTR fontStretch ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OPACITY), displaybind, bindable] void opacity (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OPACITY), displaybind, bindable] VARIANT opacity ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPPATH), displaybind, bindable] void clipPath (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPPATH), displaybind, bindable] BSTR clipPath ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRULE), displaybind, bindable] void clipRule (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRULE), displaybind, bindable] BSTR clipRule ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILL), displaybind, bindable] void fill (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILL), displaybind, bindable] BSTR fill ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILLOPACITY), displaybind, bindable] void fillOpacity (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILLOPACITY), displaybind, bindable] VARIANT fillOpacity ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILLRULE), displaybind, bindable] void fillRule (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILLRULE), displaybind, bindable] BSTR fillRule ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_KERNING), displaybind, bindable] void kerning (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_KERNING), displaybind, bindable] VARIANT kerning ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKER), displaybind, bindable] void marker (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKER), displaybind, bindable] BSTR marker ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKEREND), displaybind, bindable] void markerEnd (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKEREND), displaybind, bindable] BSTR markerEnd ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKERMID), displaybind, bindable] void markerMid (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKERMID), displaybind, bindable] BSTR markerMid ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKERSTART), displaybind, bindable] void markerStart (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKERSTART), displaybind, bindable] BSTR markerStart ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MASK), displaybind, bindable] void mask (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MASK), displaybind, bindable] BSTR mask ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_POINTEREVENTS), displaybind, bindable] void pointerEvents (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_POINTEREVENTS), displaybind, bindable] BSTR pointerEvents ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STOPCOLOR), displaybind, bindable] void stopColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STOPCOLOR), displaybind, bindable] VARIANT stopColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STOPOPACITY), displaybind, bindable] void stopOpacity (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STOPOPACITY), displaybind, bindable] VARIANT stopOpacity ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKE), displaybind, bindable] void stroke (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKE), displaybind, bindable] BSTR stroke ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHARRAY), displaybind, bindable] void strokeDasharray (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHARRAY), displaybind, bindable] BSTR strokeDasharray ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHOFFSET), displaybind, bindable] void strokeDashoffset (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHOFFSET), displaybind, bindable] VARIANT strokeDashoffset ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINECAP), displaybind, bindable] void strokeLinecap (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINECAP), displaybind, bindable] BSTR strokeLinecap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINEJOIN), displaybind, bindable] void strokeLinejoin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINEJOIN), displaybind, bindable] BSTR strokeLinejoin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEMITERLIMIT), displaybind, bindable] void strokeMiterlimit (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEMITERLIMIT), displaybind, bindable] VARIANT strokeMiterlimit ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEOPACITY), displaybind, bindable] void strokeOpacity (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEOPACITY), displaybind, bindable] VARIANT strokeOpacity ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEWIDTH), displaybind, bindable] void strokeWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEWIDTH), displaybind, bindable] VARIANT strokeWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTANCHOR), displaybind, bindable] void textAnchor (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTANCHOR), displaybind, bindable] BSTR textAnchor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONHORIZONTAL), displaybind, bindable] void glyphOrientationHorizontal (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONHORIZONTAL), displaybind, bindable] VARIANT glyphOrientationHorizontal ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONVERTICAL), displaybind, bindable] void glyphOrientationVertical (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONVERTICAL), displaybind, bindable] VARIANT glyphOrientationVertical ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRADIUS), displaybind, bindable] void borderRadius (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRADIUS), displaybind, bindable] BSTR borderRadius ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPLEFTRADIUS), displaybind, bindable] void borderTopLeftRadius (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPLEFTRADIUS), displaybind, bindable] BSTR borderTopLeftRadius ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPRIGHTRADIUS), displaybind, bindable] void borderTopRightRadius (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPRIGHTRADIUS), displaybind, bindable] BSTR borderTopRightRadius ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMRIGHTRADIUS), displaybind, bindable] void borderBottomRightRadius (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMRIGHTRADIUS), displaybind, bindable] BSTR borderBottomRightRadius ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMLEFTRADIUS), displaybind, bindable] void borderBottomLeftRadius (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMLEFTRADIUS), displaybind, bindable] BSTR borderBottomLeftRadius ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPTOP), displaybind, bindable, hidden] void clipTop (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPTOP), displaybind, bindable, hidden] VARIANT clipTop ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRIGHT), displaybind, bindable, hidden] void clipRight (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRIGHT), displaybind, bindable, hidden] VARIANT clipRight ();
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPBOTTOM), displaybind, bindable, hidden] VARIANT clipBottom ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPLEFT), displaybind, bindable, hidden] void clipLeft (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPLEFT), displaybind, bindable, hidden] VARIANT clipLeft ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CSSFLOAT), displaybind, bindable] void cssFloat (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CSSFLOAT), displaybind, bindable] BSTR cssFloat ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCLIP), displaybind, bindable] void backgroundClip (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCLIP), displaybind, bindable] BSTR backgroundClip ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDORIGIN), displaybind, bindable] void backgroundOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDORIGIN), displaybind, bindable] BSTR backgroundOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDSIZE), displaybind, bindable] void backgroundSize (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDSIZE), displaybind, bindable] BSTR backgroundSize ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOXSHADOW), displaybind, bindable] void boxShadow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOXSHADOW), displaybind, bindable] BSTR boxShadow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORM), displaybind, bindable] void msTransform (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORM), displaybind, bindable] BSTR msTransform ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORMORIGIN), displaybind, bindable] void msTransformOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORMORIGIN), displaybind, bindable] BSTR msTransformOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLCHAINING), displaybind, bindable] void msScrollChaining (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLCHAINING), displaybind, bindable] BSTR msScrollChaining ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable] void msContentZooming (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable] BSTR msContentZooming ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable] void msContentZoomSnapType (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable] BSTR msContentZoomSnapType ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable] void msScrollRails (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable] BSTR msScrollRails ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable] void msContentZoomChaining (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable] BSTR msContentZoomChaining ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable] void msScrollSnapType (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable] BSTR msScrollSnapType ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable] void msContentZoomLimit (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable] BSTR msContentZoomLimit ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable] void msContentZoomSnap (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable] BSTR msContentZoomSnap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable] void msContentZoomSnapPoints (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable] BSTR msContentZoomSnapPoints ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable] void msContentZoomLimitMin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable] VARIANT msContentZoomLimitMin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable] void msContentZoomLimitMax (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable] VARIANT msContentZoomLimitMax ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable] void msScrollSnapX (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable] BSTR msScrollSnapX ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable] void msScrollSnapY (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable] BSTR msScrollSnapY ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable] void msScrollSnapPointsX (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable] BSTR msScrollSnapPointsX ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable] void msScrollSnapPointsY (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable] BSTR msScrollSnapPointsY ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable] void msGridColumn (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable] VARIANT msGridColumn ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable] void msGridColumnAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable] BSTR msGridColumnAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable] void msGridColumns (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable] BSTR msGridColumns ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable] void msGridColumnSpan (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable] VARIANT msGridColumnSpan ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable] void msGridRow (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable] VARIANT msGridRow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable] void msGridRowAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable] BSTR msGridRowAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable] void msGridRows (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable] BSTR msGridRows ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable] void msGridRowSpan (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable] VARIANT msGridRowSpan ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable] void msWrapThrough (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable] BSTR msWrapThrough ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable] void msWrapMargin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable] VARIANT msWrapMargin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable] void msWrapFlow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable] BSTR msWrapFlow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable] void msAnimationName (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable] BSTR msAnimationName ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable] void msAnimationDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable] BSTR msAnimationDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable] void msAnimationTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable] BSTR msAnimationTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable] void msAnimationDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable] BSTR msAnimationDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable] void msAnimationDirection (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable] BSTR msAnimationDirection ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable] void msAnimationPlayState (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable] BSTR msAnimationPlayState ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable] void msAnimationIterationCount (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable] BSTR msAnimationIterationCount ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable] void msAnimation (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable] BSTR msAnimation ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable] void msAnimationFillMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable] BSTR msAnimationFillMode ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable] void colorInterpolationFilters (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable] BSTR colorInterpolationFilters ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable] void columnCount (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable] VARIANT columnCount ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable] void columnWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable] VARIANT columnWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable] void columnGap (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable] VARIANT columnGap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable] void columnFill (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable] BSTR columnFill ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable] void columnSpan (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable] BSTR columnSpan ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNS), displaybind, bindable, nonbrowsable] void columns (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNS), displaybind, bindable, nonbrowsable] BSTR columns ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable] void columnRule (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable] BSTR columnRule ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable] void columnRuleColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable] VARIANT columnRuleColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable] void columnRuleStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable] BSTR columnRuleStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable] void columnRuleWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable] VARIANT columnRuleWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable] void breakBefore (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable] BSTR breakBefore ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable] void breakAfter (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable] BSTR breakAfter ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable] void breakInside (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable] BSTR breakInside ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable] void floodColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable] VARIANT floodColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable] void floodOpacity (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable] VARIANT floodOpacity ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable] void lightingColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable] VARIANT lightingColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable] void msScrollLimitXMin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable] VARIANT msScrollLimitXMin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable] void msScrollLimitYMin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable] VARIANT msScrollLimitYMin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable] void msScrollLimitXMax (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable] VARIANT msScrollLimitXMax ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable] void msScrollLimitYMax (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable] VARIANT msScrollLimitYMax ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable] void msScrollLimit (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable] BSTR msScrollLimit ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable] void textShadow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable] BSTR textShadow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable] void msFlowFrom (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable] BSTR msFlowFrom ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable] void msFlowInto (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable] BSTR msFlowInto ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable] void msHyphens (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable] BSTR msHyphens ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable] void msHyphenateLimitZone (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable] VARIANT msHyphenateLimitZone ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable] void msHyphenateLimitChars (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable] BSTR msHyphenateLimitChars ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable] void msHyphenateLimitLines (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable] VARIANT msHyphenateLimitLines ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable] void msHighContrastAdjust (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable] BSTR msHighContrastAdjust ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable] void enableBackground (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable] BSTR enableBackground ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable] void msFontFeatureSettings (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable] BSTR msFontFeatureSettings ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable] void msUserSelect (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable] BSTR msUserSelect ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable] void msOverflowStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable] BSTR msOverflowStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable] void msTransformStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable] BSTR msTransformStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable] void msBackfaceVisibility (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable] BSTR msBackfaceVisibility ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable] void msPerspective (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable] VARIANT msPerspective ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable] void msPerspectiveOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable] BSTR msPerspectiveOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable] void msTransitionProperty (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable] BSTR msTransitionProperty ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable] void msTransitionDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable] BSTR msTransitionDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable] void msTransitionTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable] BSTR msTransitionTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable] void msTransitionDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable] BSTR msTransitionDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable] void msTransition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable] BSTR msTransition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable] void msTouchAction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable] BSTR msTouchAction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable] void msScrollTranslation (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable] BSTR msScrollTranslation ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable] void msFlex (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable] BSTR msFlex ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable] void msFlexPositive (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable] VARIANT msFlexPositive ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable] void msFlexNegative (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable] VARIANT msFlexNegative ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable] void msFlexPreferredSize (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable] VARIANT msFlexPreferredSize ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable] void msFlexFlow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable] BSTR msFlexFlow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable] void msFlexDirection (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable] BSTR msFlexDirection ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable] void msFlexWrap (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable] BSTR msFlexWrap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable] void msFlexAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable] BSTR msFlexAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable] void msFlexItemAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable] BSTR msFlexItemAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable] void msFlexPack (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable] BSTR msFlexPack ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable] void msFlexLinePack (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable] BSTR msFlexLinePack ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable] void msFlexOrder (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable] VARIANT msFlexOrder ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable] void msTouchSelect (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable] BSTR msTouchSelect ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable] void transform (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable] BSTR transform ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable] void transformOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable] BSTR transformOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable] void transformStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable] BSTR transformStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable] void backfaceVisibility (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable] BSTR backfaceVisibility ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable] void perspective (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable] VARIANT perspective ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable] void perspectiveOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable] BSTR perspectiveOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable] void transitionProperty (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable] BSTR transitionProperty ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable] void transitionDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable] BSTR transitionDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable] void transitionTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable] BSTR transitionTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable] void transitionDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable] BSTR transitionDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable] void transition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable] BSTR transition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable] void fontFeatureSettings (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable] BSTR fontFeatureSettings ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable] void animationName (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable] BSTR animationName ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable] void animationDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable] BSTR animationDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable] void animationTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable] BSTR animationTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable] void animationDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable] BSTR animationDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable] void animationDirection (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable] BSTR animationDirection ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable] void animationPlayState (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable] BSTR animationPlayState ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable] void animationIterationCount (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable] BSTR animationIterationCount ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), displaybind, bindable] void animation (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), displaybind, bindable] BSTR animation ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), displaybind, bindable] void animationFillMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), displaybind, bindable] BSTR animationFillMode ();
    [id (DISPID_IHTMLSTYLEENABLED_MSGETPROPERTYENABLED)] VARIANT_BOOL msGetPropertyEnabled ([in] BSTR name);
    [id (DISPID_IHTMLSTYLEENABLED_MSPUTPROPERTYENABLED)] void msPutPropertyEnabled ([in] BSTR name,[in] VARIANT_BOOL b);
  };
  [noncreatable, uuid (30510741-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLCSSStyleDeclaration {
    [default] dispinterface DispHTMLCSSStyleDeclaration;
    interface IHTMLCSSStyleDeclaration;
    interface IHTMLCSSStyleDeclaration2;
    interface IHTMLStyleEnabled;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CCSSStyleDeclaration;")
  [odl, oleautomation, dual, uuid (3050f25e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyle : IDispatch {
    [propput, id (DISPID_IHTMLSTYLE_FONTFAMILY), displaybind, bindable] HRESULT fontFamily ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FONTFAMILY), displaybind, bindable] HRESULT fontFamily ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_FONTSTYLE), displaybind, bindable] HRESULT fontStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FONTSTYLE), displaybind, bindable] HRESULT fontStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_FONTVARIANT), displaybind, bindable] HRESULT fontVariant ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FONTVARIANT), displaybind, bindable] HRESULT fontVariant ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_FONTWEIGHT), displaybind, bindable] HRESULT fontWeight ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FONTWEIGHT), displaybind, bindable] HRESULT fontWeight ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_FONTSIZE), displaybind, bindable] HRESULT fontSize ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_FONTSIZE), displaybind, bindable] HRESULT fontSize ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_FONT), displaybind, bindable, nonbrowsable] HRESULT font ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FONT), displaybind, bindable, nonbrowsable] HRESULT font ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_COLOR), displaybind, bindable] HRESULT color ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_COLOR), displaybind, bindable] HRESULT color ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUND), displaybind, bindable, nonbrowsable] HRESULT background ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUND), displaybind, bindable, nonbrowsable] HRESULT background ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDCOLOR), displaybind, bindable] HRESULT backgroundColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDCOLOR), displaybind, bindable] HRESULT backgroundColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDIMAGE), displaybind, bindable] HRESULT backgroundImage ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDIMAGE), displaybind, bindable] HRESULT backgroundImage ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDREPEAT), displaybind, bindable] HRESULT backgroundRepeat ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDREPEAT), displaybind, bindable] HRESULT backgroundRepeat ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable] HRESULT backgroundAttachment ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable] HRESULT backgroundAttachment ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITION), displaybind, bindable] HRESULT backgroundPosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITION), displaybind, bindable] HRESULT backgroundPosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable] HRESULT backgroundPositionX ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable] HRESULT backgroundPositionX ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable] HRESULT backgroundPositionY ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable] HRESULT backgroundPositionY ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_WORDSPACING), displaybind, bindable] HRESULT wordSpacing ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_WORDSPACING), displaybind, bindable] HRESULT wordSpacing ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_LETTERSPACING), displaybind, bindable] HRESULT letterSpacing ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_LETTERSPACING), displaybind, bindable] HRESULT letterSpacing ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATION), displaybind, bindable] HRESULT textDecoration ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATION), displaybind, bindable] HRESULT textDecoration ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATIONNONE), displaybind, bindable] HRESULT textDecorationNone ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATIONNONE), displaybind, bindable] HRESULT textDecorationNone ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable] HRESULT textDecorationUnderline ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable] HRESULT textDecorationUnderline ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable] HRESULT textDecorationOverline ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable] HRESULT textDecorationOverline ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable] HRESULT textDecorationLineThrough ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable] HRESULT textDecorationLineThrough ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK), displaybind, bindable] HRESULT textDecorationBlink ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK), displaybind, bindable] HRESULT textDecorationBlink ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLSTYLE_VERTICALALIGN), displaybind, bindable] HRESULT verticalAlign ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_VERTICALALIGN), displaybind, bindable] HRESULT verticalAlign ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTTRANSFORM), displaybind, bindable] HRESULT textTransform ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTTRANSFORM), displaybind, bindable] HRESULT textTransform ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTALIGN), displaybind, bindable] HRESULT textAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTALIGN), displaybind, bindable] HRESULT textAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTINDENT), displaybind, bindable] HRESULT textIndent ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTINDENT), displaybind, bindable] HRESULT textIndent ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_LINEHEIGHT), displaybind, bindable] HRESULT lineHeight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_LINEHEIGHT), displaybind, bindable] HRESULT lineHeight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_MARGINTOP), displaybind, bindable] HRESULT marginTop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_MARGINTOP), displaybind, bindable] HRESULT marginTop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_MARGINRIGHT), displaybind, bindable] HRESULT marginRight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_MARGINRIGHT), displaybind, bindable] HRESULT marginRight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_MARGINBOTTOM), displaybind, bindable] HRESULT marginBottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_MARGINBOTTOM), displaybind, bindable] HRESULT marginBottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_MARGINLEFT), displaybind, bindable] HRESULT marginLeft ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_MARGINLEFT), displaybind, bindable] HRESULT marginLeft ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_MARGIN), displaybind, bindable, nonbrowsable] HRESULT margin ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_MARGIN), displaybind, bindable, nonbrowsable] HRESULT margin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_PADDINGTOP), displaybind, bindable] HRESULT paddingTop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_PADDINGTOP), displaybind, bindable] HRESULT paddingTop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_PADDINGRIGHT), displaybind, bindable] HRESULT paddingRight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_PADDINGRIGHT), displaybind, bindable] HRESULT paddingRight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_PADDINGBOTTOM), displaybind, bindable] HRESULT paddingBottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_PADDINGBOTTOM), displaybind, bindable] HRESULT paddingBottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_PADDINGLEFT), displaybind, bindable] HRESULT paddingLeft ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_PADDINGLEFT), displaybind, bindable] HRESULT paddingLeft ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_PADDING), displaybind, bindable, nonbrowsable] HRESULT padding ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_PADDING), displaybind, bindable, nonbrowsable] HRESULT padding ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDER), displaybind, bindable, nonbrowsable] HRESULT border ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDER), displaybind, bindable, nonbrowsable] HRESULT border ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERTOP), displaybind, bindable] HRESULT borderTop ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERTOP), displaybind, bindable] HRESULT borderTop ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERRIGHT), displaybind, bindable] HRESULT borderRight ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERRIGHT), displaybind, bindable] HRESULT borderRight ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERBOTTOM), displaybind, bindable] HRESULT borderBottom ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERBOTTOM), displaybind, bindable] HRESULT borderBottom ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERLEFT), displaybind, bindable] HRESULT borderLeft ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERLEFT), displaybind, bindable] HRESULT borderLeft ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERCOLOR), displaybind, bindable] HRESULT borderColor ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERCOLOR), displaybind, bindable] HRESULT borderColor ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERTOPCOLOR), displaybind, bindable] HRESULT borderTopColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERTOPCOLOR), displaybind, bindable] HRESULT borderTopColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR), displaybind, bindable] HRESULT borderRightColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR), displaybind, bindable] HRESULT borderRightColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable] HRESULT borderBottomColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable] HRESULT borderBottomColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERLEFTCOLOR), displaybind, bindable] HRESULT borderLeftColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERLEFTCOLOR), displaybind, bindable] HRESULT borderLeftColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERWIDTH), displaybind, bindable] HRESULT borderWidth ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERWIDTH), displaybind, bindable] HRESULT borderWidth ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERTOPWIDTH), displaybind, bindable] HRESULT borderTopWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERTOPWIDTH), displaybind, bindable] HRESULT borderTopWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH), displaybind, bindable] HRESULT borderRightWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH), displaybind, bindable] HRESULT borderRightWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable] HRESULT borderBottomWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable] HRESULT borderBottomWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERLEFTWIDTH), displaybind, bindable] HRESULT borderLeftWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERLEFTWIDTH), displaybind, bindable] HRESULT borderLeftWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERSTYLE), displaybind, bindable] HRESULT borderStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERSTYLE), displaybind, bindable] HRESULT borderStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERTOPSTYLE), displaybind, bindable] HRESULT borderTopStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERTOPSTYLE), displaybind, bindable] HRESULT borderTopStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE), displaybind, bindable] HRESULT borderRightStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE), displaybind, bindable] HRESULT borderRightStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable] HRESULT borderBottomStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable] HRESULT borderBottomStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERLEFTSTYLE), displaybind, bindable] HRESULT borderLeftStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERLEFTSTYLE), displaybind, bindable] HRESULT borderLeftStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_WIDTH), displaybind, bindable] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_WIDTH), displaybind, bindable] HRESULT width ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_HEIGHT), displaybind, bindable] HRESULT height ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_HEIGHT), displaybind, bindable] HRESULT height ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_STYLEFLOAT), displaybind, bindable] HRESULT styleFloat ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_STYLEFLOAT), displaybind, bindable] HRESULT styleFloat ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_CLEAR), displaybind, bindable] HRESULT clear ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_CLEAR), displaybind, bindable] HRESULT clear ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_DISPLAY), displaybind, bindable] HRESULT display ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_DISPLAY), displaybind, bindable] HRESULT display ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_VISIBILITY), displaybind, bindable] HRESULT visibility ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_VISIBILITY), displaybind, bindable] HRESULT visibility ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_LISTSTYLETYPE), displaybind, bindable] HRESULT listStyleType ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_LISTSTYLETYPE), displaybind, bindable] HRESULT listStyleType ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_LISTSTYLEPOSITION), displaybind, bindable] HRESULT listStylePosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_LISTSTYLEPOSITION), displaybind, bindable] HRESULT listStylePosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_LISTSTYLEIMAGE), displaybind, bindable] HRESULT listStyleImage ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_LISTSTYLEIMAGE), displaybind, bindable] HRESULT listStyleImage ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable] HRESULT listStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable] HRESULT listStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_WHITESPACE), displaybind, bindable] HRESULT whiteSpace ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_WHITESPACE), displaybind, bindable] HRESULT whiteSpace ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_TOP), displaybind, bindable] HRESULT top ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_TOP), displaybind, bindable] HRESULT top ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_LEFT), displaybind, bindable] HRESULT left ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_LEFT), displaybind, bindable] HRESULT left ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLSTYLE_POSITION), displaybind, bindable] HRESULT position ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_ZINDEX), displaybind, bindable] HRESULT zIndex ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_ZINDEX), displaybind, bindable] HRESULT zIndex ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_OVERFLOW), displaybind, bindable] HRESULT overflow ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_OVERFLOW), displaybind, bindable] HRESULT overflow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_PAGEBREAKBEFORE), displaybind, bindable] HRESULT pageBreakBefore ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_PAGEBREAKBEFORE), displaybind, bindable] HRESULT pageBreakBefore ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_PAGEBREAKAFTER), displaybind, bindable] HRESULT pageBreakAfter ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_PAGEBREAKAFTER), displaybind, bindable] HRESULT pageBreakAfter ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_CSSTEXT), displaybind, bindable, nonbrowsable] HRESULT cssText ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_CSSTEXT), displaybind, bindable, nonbrowsable] HRESULT cssText ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_PIXELTOP), displaybind, bindable, hidden] HRESULT pixelTop ([in] long v);
    [propget, id (DISPID_IHTMLSTYLE_PIXELTOP), displaybind, bindable, hidden] HRESULT pixelTop ([retval, out] long *p);
    [propput, id (DISPID_IHTMLSTYLE_PIXELLEFT), displaybind, bindable, hidden] HRESULT pixelLeft ([in] long v);
    [propget, id (DISPID_IHTMLSTYLE_PIXELLEFT), displaybind, bindable, hidden] HRESULT pixelLeft ([retval, out] long *p);
    [propput, id (DISPID_IHTMLSTYLE_PIXELWIDTH), displaybind, bindable, hidden] HRESULT pixelWidth ([in] long v);
    [propget, id (DISPID_IHTMLSTYLE_PIXELWIDTH), displaybind, bindable, hidden] HRESULT pixelWidth ([retval, out] long *p);
    [propput, id (DISPID_IHTMLSTYLE_PIXELHEIGHT), displaybind, bindable, hidden] HRESULT pixelHeight ([in] long v);
    [propget, id (DISPID_IHTMLSTYLE_PIXELHEIGHT), displaybind, bindable, hidden] HRESULT pixelHeight ([retval, out] long *p);
    [propput, id (DISPID_IHTMLSTYLE_POSTOP), displaybind, bindable] HRESULT posTop ([in] float v);
    [propget, id (DISPID_IHTMLSTYLE_POSTOP), displaybind, bindable] HRESULT posTop ([retval, out] float *p);
    [propput, id (DISPID_IHTMLSTYLE_POSLEFT), displaybind, bindable] HRESULT posLeft ([in] float v);
    [propget, id (DISPID_IHTMLSTYLE_POSLEFT), displaybind, bindable] HRESULT posLeft ([retval, out] float *p);
    [propput, id (DISPID_IHTMLSTYLE_POSWIDTH), displaybind, bindable] HRESULT posWidth ([in] float v);
    [propget, id (DISPID_IHTMLSTYLE_POSWIDTH), displaybind, bindable] HRESULT posWidth ([retval, out] float *p);
    [propput, id (DISPID_IHTMLSTYLE_POSHEIGHT), displaybind, bindable] HRESULT posHeight ([in] float v);
    [propget, id (DISPID_IHTMLSTYLE_POSHEIGHT), displaybind, bindable] HRESULT posHeight ([retval, out] float *p);
    [propput, id (DISPID_IHTMLSTYLE_CURSOR), displaybind, bindable] HRESULT cursor ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_CURSOR), displaybind, bindable] HRESULT cursor ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_CLIP), displaybind, bindable] HRESULT clip ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_CLIP), displaybind, bindable] HRESULT clip ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_FILTER), displaybind, bindable] HRESULT filter ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FILTER), displaybind, bindable] HRESULT filter ([retval, out] BSTR *p);
    [id (DISPID_IHTMLSTYLE_SETATTRIBUTE)] HRESULT setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLSTYLE_GETATTRIBUTE)] HRESULT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags,[defaultvalue (0), retval, out] VARIANT *AttributeValue);
    [id (DISPID_IHTMLSTYLE_REMOVEATTRIBUTE)] HRESULT removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags,[defaultvalue (0), retval, out] VARIANT_BOOL *pfSuccess);
    [id (DISPID_IHTMLSTYLE_TOSTRING)] HRESULT toString ([retval, out] BSTR *String);
  };

  [odl, oleautomation, dual, uuid (3050f4a2-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLStyle2 : IDispatch {
    [id (DISPID_IHTMLSTYLE2_TABLELAYOUT), propput, displaybind, bindable] HRESULT tableLayout ([in] BSTR v);
    [id (DISPID_IHTMLSTYLE2_TABLELAYOUT), propget, displaybind, bindable] HRESULT tableLayout ([retval, out] BSTR *p);
    [id (DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), propput, displaybind, bindable] HRESULT borderCollapse ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), displaybind, bindable] HRESULT borderCollapse ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable] HRESULT direction ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable] HRESULT direction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable] HRESULT behavior ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable] HRESULT behavior ([retval, out] BSTR *p);
    [id (DISPID_IHTMLSTYLE2_SETEXPRESSION)] HRESULT setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLSTYLE2_GETEXPRESSION)] HRESULT getExpression ([in] BSTR propname,[retval, out] VARIANT *expression);
    [id (DISPID_IHTMLSTYLE2_REMOVEEXPRESSION)] HRESULT removeExpression ([in] BSTR propname,[retval, out] VARIANT_BOOL *pfSuccess);
    [propput, id (DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable] HRESULT position ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable] HRESULT position ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable] HRESULT unicodeBidi ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable] HRESULT unicodeBidi ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable] HRESULT bottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable] HRESULT bottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable] HRESULT right ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable] HRESULT right ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden] HRESULT pixelBottom ([in] long v);
    [propget, id (DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden] HRESULT pixelBottom ([retval, out] long *p);
    [propput, id (DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden] HRESULT pixelRight ([in] long v);
    [propget, id (DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden] HRESULT pixelRight ([retval, out] long *p);
    [propput, id (DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable] HRESULT posBottom ([in] float v);
    [propget, id (DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable] HRESULT posBottom ([retval, out] float *p);
    [propput, id (DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable] HRESULT posRight ([in] float v);
    [propget, id (DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable] HRESULT posRight ([retval, out] float *p);
    [propput, id (DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable] HRESULT imeMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable] HRESULT imeMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable] HRESULT rubyAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable] HRESULT rubyAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable] HRESULT rubyPosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable] HRESULT rubyPosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable] HRESULT rubyOverhang ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable] HRESULT rubyOverhang ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable] HRESULT layoutGridChar ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable] HRESULT layoutGridChar ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable] HRESULT layoutGridLine ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable] HRESULT layoutGridLine ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable] HRESULT layoutGridMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable] HRESULT layoutGridMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable] HRESULT layoutGridType ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable] HRESULT layoutGridType ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable] HRESULT layoutGrid ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable] HRESULT layoutGrid ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable] HRESULT wordBreak ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable] HRESULT wordBreak ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable] HRESULT lineBreak ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable] HRESULT lineBreak ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable] HRESULT textJustify ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable] HRESULT textJustify ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable] HRESULT textJustifyTrim ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable] HRESULT textJustifyTrim ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable] HRESULT textKashida ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable] HRESULT textKashida ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable] HRESULT textAutospace ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable] HRESULT textAutospace ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable] HRESULT overflowX ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable] HRESULT overflowX ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable] HRESULT overflowY ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable] HRESULT overflowY ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable] HRESULT accelerator ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable] HRESULT accelerator ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (3050f656-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLStyle3 : IDispatch {
    [id (DISPID_IHTMLSTYLE3_LAYOUTFLOW), propput, displaybind, bindable] HRESULT layoutFlow ([in] BSTR v);
    [id (DISPID_IHTMLSTYLE3_LAYOUTFLOW), propget, displaybind, bindable] HRESULT layoutFlow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE3_ZOOM), displaybind, bindable] HRESULT zoom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_ZOOM), displaybind, bindable] HRESULT zoom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE3_WORDWRAP), displaybind, bindable] HRESULT wordWrap ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE3_WORDWRAP), displaybind, bindable] HRESULT wordWrap ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable] HRESULT textUnderlinePosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable] HRESULT textUnderlinePosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE3_SCROLLBARBASECOLOR), displaybind, bindable] HRESULT scrollbarBaseColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_SCROLLBARBASECOLOR), displaybind, bindable] HRESULT scrollbarBaseColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE3_SCROLLBARFACECOLOR), displaybind, bindable] HRESULT scrollbarFaceColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_SCROLLBARFACECOLOR), displaybind, bindable] HRESULT scrollbarFaceColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] HRESULT scrollbar3dLightColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] HRESULT scrollbar3dLightColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarShadowColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarShadowColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] HRESULT scrollbarHighlightColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] HRESULT scrollbarHighlightColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarDarkShadowColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarDarkShadowColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable] HRESULT scrollbarArrowColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable] HRESULT scrollbarArrowColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable] HRESULT scrollbarTrackColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable] HRESULT scrollbarTrackColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE3_WRITINGMODE), displaybind, bindable] HRESULT writingMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE3_WRITINGMODE), displaybind, bindable] HRESULT writingMode ([retval, out] BSTR *p);
    [id (DISPID_IHTMLSTYLE3_TEXTALIGNLAST), propput, displaybind, bindable] HRESULT textAlignLast ([in] BSTR v);
    [id (DISPID_IHTMLSTYLE3_TEXTALIGNLAST), propget, displaybind, bindable] HRESULT textAlignLast ([retval, out] BSTR *p);
    [id (DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE), propput, displaybind, bindable] HRESULT textKashidaSpace ([in] VARIANT v);
    [id (DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE), propget, displaybind, bindable] HRESULT textKashidaSpace ([retval, out] VARIANT *p);
  };

  [odl, oleautomation, dual, uuid (3050f816-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLStyle4 : IDispatch {
    [id (DISPID_IHTMLSTYLE4_TEXTOVERFLOW), propput, displaybind, bindable] HRESULT textOverflow ([in] BSTR v);
    [id (DISPID_IHTMLSTYLE4_TEXTOVERFLOW), propget, displaybind, bindable] HRESULT textOverflow ([retval, out] BSTR *p);
    [id (DISPID_IHTMLSTYLE4_MINHEIGHT), propput, displaybind, bindable] HRESULT minHeight ([in] VARIANT v);
    [id (DISPID_IHTMLSTYLE4_MINHEIGHT), propget, displaybind, bindable] HRESULT minHeight ([retval, out] VARIANT *p);
  };

  [odl, oleautomation, dual, uuid (3050f33a-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLStyle5 : IDispatch {
    [id (DISPID_IHTMLSTYLE5_MSINTERPOLATIONMODE), propput, displaybind, bindable] HRESULT msInterpolationMode ([in] BSTR v);
    [id (DISPID_IHTMLSTYLE5_MSINTERPOLATIONMODE), propget, displaybind, bindable] HRESULT msInterpolationMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE5_MAXHEIGHT), displaybind, bindable] HRESULT maxHeight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE5_MAXHEIGHT), displaybind, bindable] HRESULT maxHeight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE5_MINWIDTH), displaybind, bindable] HRESULT minWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE5_MINWIDTH), displaybind, bindable] HRESULT minWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE5_MAXWIDTH), displaybind, bindable] HRESULT maxWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE5_MAXWIDTH), displaybind, bindable] HRESULT maxWidth ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (30510480-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyle6 : IDispatch {
    [propput, id (DISPID_IHTMLSTYLE6_CONTENT), displaybind, bindable] HRESULT content ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_CONTENT), displaybind, bindable] HRESULT content ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_CAPTIONSIDE), displaybind, bindable] HRESULT captionSide ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_CAPTIONSIDE), displaybind, bindable] HRESULT captionSide ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_COUNTERINCREMENT), displaybind, bindable] HRESULT counterIncrement ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_COUNTERINCREMENT), displaybind, bindable] HRESULT counterIncrement ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_COUNTERRESET), displaybind, bindable] HRESULT counterReset ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_COUNTERRESET), displaybind, bindable] HRESULT counterReset ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_OUTLINE), displaybind, bindable] HRESULT outline ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_OUTLINE), displaybind, bindable] HRESULT outline ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_OUTLINEWIDTH), displaybind, bindable] HRESULT outlineWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE6_OUTLINEWIDTH), displaybind, bindable] HRESULT outlineWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE6_OUTLINESTYLE), displaybind, bindable] HRESULT outlineStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_OUTLINESTYLE), displaybind, bindable] HRESULT outlineStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_OUTLINECOLOR), displaybind, bindable] HRESULT outlineColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE6_OUTLINECOLOR), displaybind, bindable] HRESULT outlineColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE6_BOXSIZING), displaybind, bindable] HRESULT boxSizing ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_BOXSIZING), displaybind, bindable] HRESULT boxSizing ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_BORDERSPACING), displaybind, bindable] HRESULT borderSpacing ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_BORDERSPACING), displaybind, bindable] HRESULT borderSpacing ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_ORPHANS), displaybind, bindable] HRESULT orphans ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE6_ORPHANS), displaybind, bindable] HRESULT orphans ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE6_WIDOWS), displaybind, bindable] HRESULT widows ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE6_WIDOWS), displaybind, bindable] HRESULT widows ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE6_PAGEBREAKINSIDE), displaybind, bindable] HRESULT pageBreakInside ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_PAGEBREAKINSIDE), displaybind, bindable] HRESULT pageBreakInside ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_EMPTYCELLS), displaybind, bindable] HRESULT emptyCells ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_EMPTYCELLS), displaybind, bindable] HRESULT emptyCells ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_MSBLOCKPROGRESSION), displaybind, bindable] HRESULT msBlockProgression ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_MSBLOCKPROGRESSION), displaybind, bindable] HRESULT msBlockProgression ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_QUOTES), displaybind, bindable] HRESULT quotes ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_QUOTES), displaybind, bindable] HRESULT quotes ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (3050f3cf-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLRuleStyle : IDispatch {
    [propput, id (DISPID_IHTMLRULESTYLE_FONTFAMILY), displaybind, bindable] HRESULT fontFamily ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTFAMILY), displaybind, bindable] HRESULT fontFamily ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_FONTSTYLE), displaybind, bindable] HRESULT fontStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTSTYLE), displaybind, bindable] HRESULT fontStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_FONTVARIANT), displaybind, bindable] HRESULT fontVariant ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTVARIANT), displaybind, bindable] HRESULT fontVariant ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_FONTWEIGHT), displaybind, bindable] HRESULT fontWeight ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTWEIGHT), displaybind, bindable] HRESULT fontWeight ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_FONTSIZE), displaybind, bindable] HRESULT fontSize ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTSIZE), displaybind, bindable] HRESULT fontSize ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_FONT), displaybind, bindable, nonbrowsable] HRESULT font ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONT), displaybind, bindable, nonbrowsable] HRESULT font ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_COLOR), displaybind, bindable] HRESULT color ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_COLOR), displaybind, bindable] HRESULT color ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUND), displaybind, bindable, nonbrowsable] HRESULT background ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUND), displaybind, bindable, nonbrowsable] HRESULT background ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR), displaybind, bindable] HRESULT backgroundColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR), displaybind, bindable] HRESULT backgroundColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE), displaybind, bindable] HRESULT backgroundImage ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE), displaybind, bindable] HRESULT backgroundImage ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT), displaybind, bindable] HRESULT backgroundRepeat ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT), displaybind, bindable] HRESULT backgroundRepeat ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT), displaybind, bindable] HRESULT backgroundAttachment ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT), displaybind, bindable] HRESULT backgroundAttachment ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION), displaybind, bindable] HRESULT backgroundPosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION), displaybind, bindable] HRESULT backgroundPosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX), displaybind, bindable] HRESULT backgroundPositionX ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX), displaybind, bindable] HRESULT backgroundPositionX ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY), displaybind, bindable] HRESULT backgroundPositionY ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY), displaybind, bindable] HRESULT backgroundPositionY ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_WORDSPACING), displaybind, bindable] HRESULT wordSpacing ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_WORDSPACING), displaybind, bindable] HRESULT wordSpacing ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_LETTERSPACING), displaybind, bindable] HRESULT letterSpacing ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_LETTERSPACING), displaybind, bindable] HRESULT letterSpacing ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATION), displaybind, bindable] HRESULT textDecoration ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATION), displaybind, bindable] HRESULT textDecoration ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE), displaybind, bindable] HRESULT textDecorationNone ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE), displaybind, bindable] HRESULT textDecorationNone ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable] HRESULT textDecorationUnderline ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable] HRESULT textDecorationUnderline ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable] HRESULT textDecorationOverline ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable] HRESULT textDecorationOverline ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable] HRESULT textDecorationLineThrough ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable] HRESULT textDecorationLineThrough ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK), displaybind, bindable] HRESULT textDecorationBlink ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK), displaybind, bindable] HRESULT textDecorationBlink ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLRULESTYLE_VERTICALALIGN), displaybind, bindable] HRESULT verticalAlign ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_VERTICALALIGN), displaybind, bindable] HRESULT verticalAlign ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTTRANSFORM), displaybind, bindable] HRESULT textTransform ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTTRANSFORM), displaybind, bindable] HRESULT textTransform ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTALIGN), displaybind, bindable] HRESULT textAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTALIGN), displaybind, bindable] HRESULT textAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTINDENT), displaybind, bindable] HRESULT textIndent ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTINDENT), displaybind, bindable] HRESULT textIndent ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_LINEHEIGHT), displaybind, bindable] HRESULT lineHeight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_LINEHEIGHT), displaybind, bindable] HRESULT lineHeight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_MARGINTOP), displaybind, bindable] HRESULT marginTop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGINTOP), displaybind, bindable] HRESULT marginTop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_MARGINRIGHT), displaybind, bindable] HRESULT marginRight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGINRIGHT), displaybind, bindable] HRESULT marginRight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_MARGINBOTTOM), displaybind, bindable] HRESULT marginBottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGINBOTTOM), displaybind, bindable] HRESULT marginBottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_MARGINLEFT), displaybind, bindable] HRESULT marginLeft ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGINLEFT), displaybind, bindable] HRESULT marginLeft ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_MARGIN), displaybind, bindable, nonbrowsable] HRESULT margin ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGIN), displaybind, bindable, nonbrowsable] HRESULT margin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_PADDINGTOP), displaybind, bindable] HRESULT paddingTop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDINGTOP), displaybind, bindable] HRESULT paddingTop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_PADDINGRIGHT), displaybind, bindable] HRESULT paddingRight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDINGRIGHT), displaybind, bindable] HRESULT paddingRight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_PADDINGBOTTOM), displaybind, bindable] HRESULT paddingBottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDINGBOTTOM), displaybind, bindable] HRESULT paddingBottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_PADDINGLEFT), displaybind, bindable] HRESULT paddingLeft ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDINGLEFT), displaybind, bindable] HRESULT paddingLeft ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_PADDING), displaybind, bindable, nonbrowsable] HRESULT padding ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDING), displaybind, bindable, nonbrowsable] HRESULT padding ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDER), displaybind, bindable, nonbrowsable] HRESULT border ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDER), displaybind, bindable, nonbrowsable] HRESULT border ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERTOP), displaybind, bindable] HRESULT borderTop ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERTOP), displaybind, bindable] HRESULT borderTop ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERRIGHT), displaybind, bindable] HRESULT borderRight ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERRIGHT), displaybind, bindable] HRESULT borderRight ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOM), displaybind, bindable] HRESULT borderBottom ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOM), displaybind, bindable] HRESULT borderBottom ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERLEFT), displaybind, bindable] HRESULT borderLeft ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERLEFT), displaybind, bindable] HRESULT borderLeft ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERCOLOR), displaybind, bindable] HRESULT borderColor ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERCOLOR), displaybind, bindable] HRESULT borderColor ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR), displaybind, bindable] HRESULT borderTopColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR), displaybind, bindable] HRESULT borderTopColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR), displaybind, bindable] HRESULT borderRightColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR), displaybind, bindable] HRESULT borderRightColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR), displaybind, bindable] HRESULT borderBottomColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR), displaybind, bindable] HRESULT borderBottomColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR), displaybind, bindable] HRESULT borderLeftColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR), displaybind, bindable] HRESULT borderLeftColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERWIDTH), displaybind, bindable] HRESULT borderWidth ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERWIDTH), displaybind, bindable] HRESULT borderWidth ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH), displaybind, bindable] HRESULT borderTopWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH), displaybind, bindable] HRESULT borderTopWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH), displaybind, bindable] HRESULT borderRightWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH), displaybind, bindable] HRESULT borderRightWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH), displaybind, bindable] HRESULT borderBottomWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH), displaybind, bindable] HRESULT borderBottomWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH), displaybind, bindable] HRESULT borderLeftWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH), displaybind, bindable] HRESULT borderLeftWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERSTYLE), displaybind, bindable] HRESULT borderStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERSTYLE), displaybind, bindable] HRESULT borderStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE), displaybind, bindable] HRESULT borderTopStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE), displaybind, bindable] HRESULT borderTopStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE), displaybind, bindable] HRESULT borderRightStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE), displaybind, bindable] HRESULT borderRightStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE), displaybind, bindable] HRESULT borderBottomStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE), displaybind, bindable] HRESULT borderBottomStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE), displaybind, bindable] HRESULT borderLeftStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE), displaybind, bindable] HRESULT borderLeftStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_WIDTH), displaybind, bindable] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_WIDTH), displaybind, bindable] HRESULT width ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_HEIGHT), displaybind, bindable] HRESULT height ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_HEIGHT), displaybind, bindable] HRESULT height ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_STYLEFLOAT), displaybind, bindable] HRESULT styleFloat ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_STYLEFLOAT), displaybind, bindable] HRESULT styleFloat ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_CLEAR), displaybind, bindable] HRESULT clear ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_CLEAR), displaybind, bindable] HRESULT clear ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_DISPLAY), displaybind, bindable] HRESULT display ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_DISPLAY), displaybind, bindable] HRESULT display ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_VISIBILITY), displaybind, bindable] HRESULT visibility ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_VISIBILITY), displaybind, bindable] HRESULT visibility ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_LISTSTYLETYPE), displaybind, bindable] HRESULT listStyleType ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_LISTSTYLETYPE), displaybind, bindable] HRESULT listStyleType ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION), displaybind, bindable] HRESULT listStylePosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION), displaybind, bindable] HRESULT listStylePosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE), displaybind, bindable] HRESULT listStyleImage ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE), displaybind, bindable] HRESULT listStyleImage ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable] HRESULT listStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable] HRESULT listStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_WHITESPACE), displaybind, bindable] HRESULT whiteSpace ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_WHITESPACE), displaybind, bindable] HRESULT whiteSpace ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TOP), displaybind, bindable] HRESULT top ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_TOP), displaybind, bindable] HRESULT top ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_LEFT), displaybind, bindable] HRESULT left ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_LEFT), displaybind, bindable] HRESULT left ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLRULESTYLE_POSITION), displaybind, bindable] HRESULT position ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_ZINDEX), displaybind, bindable] HRESULT zIndex ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_ZINDEX), displaybind, bindable] HRESULT zIndex ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_OVERFLOW), displaybind, bindable] HRESULT overflow ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_OVERFLOW), displaybind, bindable] HRESULT overflow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE), displaybind, bindable] HRESULT pageBreakBefore ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE), displaybind, bindable] HRESULT pageBreakBefore ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER), displaybind, bindable] HRESULT pageBreakAfter ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER), displaybind, bindable] HRESULT pageBreakAfter ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_CSSTEXT), displaybind, bindable, nonbrowsable] HRESULT cssText ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_CSSTEXT), displaybind, bindable, nonbrowsable] HRESULT cssText ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_CURSOR), displaybind, bindable] HRESULT cursor ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_CURSOR), displaybind, bindable] HRESULT cursor ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_CLIP), displaybind, bindable] HRESULT clip ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_CLIP), displaybind, bindable] HRESULT clip ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_FILTER), displaybind, bindable] HRESULT filter ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FILTER), displaybind, bindable] HRESULT filter ([retval, out] BSTR *p);
    [id (DISPID_IHTMLRULESTYLE_SETATTRIBUTE)] HRESULT setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLRULESTYLE_GETATTRIBUTE)] HRESULT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags,[defaultvalue (0), retval, out] VARIANT *AttributeValue);
    [id (DISPID_IHTMLRULESTYLE_REMOVEATTRIBUTE)] HRESULT removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags,[defaultvalue (0), retval, out] VARIANT_BOOL *pfSuccess);
  };

  [odl, oleautomation, dual, uuid (3050f4ac-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLRuleStyle2 : IDispatch {
    [id (DISPID_IHTMLRULESTYLE2_TABLELAYOUT), propput, displaybind, bindable] HRESULT tableLayout ([in] BSTR v);
    [id (DISPID_IHTMLRULESTYLE2_TABLELAYOUT), propget, displaybind, bindable] HRESULT tableLayout ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_BORDERCOLLAPSE), displaybind, bindable] HRESULT borderCollapse ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_BORDERCOLLAPSE), displaybind, bindable] HRESULT borderCollapse ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_DIRECTION), displaybind, bindable] HRESULT direction ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_DIRECTION), displaybind, bindable] HRESULT direction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_BEHAVIOR), displaybind, bindable] HRESULT behavior ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_BEHAVIOR), displaybind, bindable] HRESULT behavior ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_POSITION), displaybind, bindable] HRESULT position ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_POSITION), displaybind, bindable] HRESULT position ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_UNICODEBIDI), displaybind, bindable] HRESULT unicodeBidi ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_UNICODEBIDI), displaybind, bindable] HRESULT unicodeBidi ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_BOTTOM), displaybind, bindable] HRESULT bottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_BOTTOM), displaybind, bindable] HRESULT bottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_RIGHT), displaybind, bindable] HRESULT right ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_RIGHT), displaybind, bindable] HRESULT right ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_PIXELBOTTOM), displaybind, bindable, hidden] HRESULT pixelBottom ([in] long v);
    [propget, id (DISPID_IHTMLRULESTYLE2_PIXELBOTTOM), displaybind, bindable, hidden] HRESULT pixelBottom ([retval, out] long *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_PIXELRIGHT), displaybind, bindable, hidden] HRESULT pixelRight ([in] long v);
    [propget, id (DISPID_IHTMLRULESTYLE2_PIXELRIGHT), displaybind, bindable, hidden] HRESULT pixelRight ([retval, out] long *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_POSBOTTOM), displaybind, bindable] HRESULT posBottom ([in] float v);
    [propget, id (DISPID_IHTMLRULESTYLE2_POSBOTTOM), displaybind, bindable] HRESULT posBottom ([retval, out] float *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_POSRIGHT), displaybind, bindable] HRESULT posRight ([in] float v);
    [propget, id (DISPID_IHTMLRULESTYLE2_POSRIGHT), displaybind, bindable] HRESULT posRight ([retval, out] float *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_IMEMODE), displaybind, bindable] HRESULT imeMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_IMEMODE), displaybind, bindable] HRESULT imeMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_RUBYALIGN), displaybind, bindable] HRESULT rubyAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_RUBYALIGN), displaybind, bindable] HRESULT rubyAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_RUBYPOSITION), displaybind, bindable] HRESULT rubyPosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_RUBYPOSITION), displaybind, bindable] HRESULT rubyPosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_RUBYOVERHANG), displaybind, bindable] HRESULT rubyOverhang ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_RUBYOVERHANG), displaybind, bindable] HRESULT rubyOverhang ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDCHAR), displaybind, bindable] HRESULT layoutGridChar ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDCHAR), displaybind, bindable] HRESULT layoutGridChar ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDLINE), displaybind, bindable] HRESULT layoutGridLine ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDLINE), displaybind, bindable] HRESULT layoutGridLine ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDMODE), displaybind, bindable] HRESULT layoutGridMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDMODE), displaybind, bindable] HRESULT layoutGridMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDTYPE), displaybind, bindable] HRESULT layoutGridType ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDTYPE), displaybind, bindable] HRESULT layoutGridType ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable] HRESULT layoutGrid ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable] HRESULT layoutGrid ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_TEXTAUTOSPACE), displaybind, bindable] HRESULT textAutospace ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TEXTAUTOSPACE), displaybind, bindable] HRESULT textAutospace ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_WORDBREAK), displaybind, bindable] HRESULT wordBreak ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_WORDBREAK), displaybind, bindable] HRESULT wordBreak ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_LINEBREAK), displaybind, bindable] HRESULT lineBreak ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LINEBREAK), displaybind, bindable] HRESULT lineBreak ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_TEXTJUSTIFY), displaybind, bindable] HRESULT textJustify ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TEXTJUSTIFY), displaybind, bindable] HRESULT textJustify ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable] HRESULT textJustifyTrim ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable] HRESULT textJustifyTrim ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_TEXTKASHIDA), displaybind, bindable] HRESULT textKashida ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TEXTKASHIDA), displaybind, bindable] HRESULT textKashida ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_OVERFLOWX), displaybind, bindable] HRESULT overflowX ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_OVERFLOWX), displaybind, bindable] HRESULT overflowX ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_OVERFLOWY), displaybind, bindable] HRESULT overflowY ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_OVERFLOWY), displaybind, bindable] HRESULT overflowY ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_ACCELERATOR), displaybind, bindable] HRESULT accelerator ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_ACCELERATOR), displaybind, bindable] HRESULT accelerator ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f657-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLRuleStyle3 : IDispatch {
    [propput, id (DISPID_IHTMLRULESTYLE3_LAYOUTFLOW), displaybind, bindable] HRESULT layoutFlow ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_LAYOUTFLOW), displaybind, bindable] HRESULT layoutFlow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_ZOOM), displaybind, bindable] HRESULT zoom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_ZOOM), displaybind, bindable] HRESULT zoom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_WORDWRAP), displaybind, bindable] HRESULT wordWrap ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_WORDWRAP), displaybind, bindable] HRESULT wordWrap ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable] HRESULT textUnderlinePosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable] HRESULT textUnderlinePosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARBASECOLOR), displaybind, bindable] HRESULT scrollbarBaseColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARBASECOLOR), displaybind, bindable] HRESULT scrollbarBaseColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARFACECOLOR), displaybind, bindable] HRESULT scrollbarFaceColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARFACECOLOR), displaybind, bindable] HRESULT scrollbarFaceColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] HRESULT scrollbar3dLightColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] HRESULT scrollbar3dLightColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarShadowColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarShadowColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] HRESULT scrollbarHighlightColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] HRESULT scrollbarHighlightColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarDarkShadowColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarDarkShadowColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable] HRESULT scrollbarArrowColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable] HRESULT scrollbarArrowColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable] HRESULT scrollbarTrackColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable] HRESULT scrollbarTrackColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_WRITINGMODE), displaybind, bindable] HRESULT writingMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_WRITINGMODE), displaybind, bindable] HRESULT writingMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_TEXTALIGNLAST), displaybind, bindable] HRESULT textAlignLast ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_TEXTALIGNLAST), displaybind, bindable] HRESULT textAlignLast ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_TEXTKASHIDASPACE), displaybind, bindable] HRESULT textKashidaSpace ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_TEXTKASHIDASPACE), displaybind, bindable] HRESULT textKashidaSpace ([retval, out] VARIANT *p);
  };

  [odl, oleautomation, dual, uuid (3050f817-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLRuleStyle4 : IDispatch {
    [id (DISPID_IHTMLRULESTYLE4_TEXTOVERFLOW), propput, displaybind, bindable] HRESULT textOverflow ([in] BSTR v);
    [id (DISPID_IHTMLRULESTYLE4_TEXTOVERFLOW), propget, displaybind, bindable] HRESULT textOverflow ([retval, out] BSTR *p);
    [id (DISPID_IHTMLRULESTYLE4_MINHEIGHT), propput, displaybind, bindable] HRESULT minHeight ([in] VARIANT v);
    [id (DISPID_IHTMLRULESTYLE4_MINHEIGHT), propget, displaybind, bindable] HRESULT minHeight ([retval, out] VARIANT *p);
  };

  [odl, oleautomation, dual, uuid (3050f335-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLRuleStyle5 : IDispatch {
    [id (DISPID_IHTMLRULESTYLE5_MSINTERPOLATIONMODE), propput, displaybind, bindable] HRESULT msInterpolationMode ([in] BSTR v);
    [id (DISPID_IHTMLRULESTYLE5_MSINTERPOLATIONMODE), propget, displaybind, bindable] HRESULT msInterpolationMode ([retval, out] BSTR *p);
    [id (DISPID_IHTMLRULESTYLE5_MAXHEIGHT), propput, displaybind, bindable] HRESULT maxHeight ([in] VARIANT v);
    [id (DISPID_IHTMLRULESTYLE5_MAXHEIGHT), propget, displaybind, bindable] HRESULT maxHeight ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLRULESTYLE5_MINWIDTH), propput, displaybind, bindable] HRESULT minWidth ([in] VARIANT v);
    [id (DISPID_IHTMLRULESTYLE5_MINWIDTH), propget, displaybind, bindable] HRESULT minWidth ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLRULESTYLE5_MAXWIDTH), propput, displaybind, bindable] HRESULT maxWidth ([in] VARIANT v);
    [id (DISPID_IHTMLRULESTYLE5_MAXWIDTH), propget, displaybind, bindable] HRESULT maxWidth ([retval, out] VARIANT *p);
  };

  [odl, oleautomation, dual, uuid (30510471-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLRuleStyle6 : IDispatch {
    [propput, id (DISPID_IHTMLRULESTYLE6_CONTENT), displaybind, bindable] HRESULT content ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_CONTENT), displaybind, bindable] HRESULT content ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_CAPTIONSIDE), displaybind, bindable] HRESULT captionSide ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_CAPTIONSIDE), displaybind, bindable] HRESULT captionSide ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_COUNTERINCREMENT), displaybind, bindable] HRESULT counterIncrement ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_COUNTERINCREMENT), displaybind, bindable] HRESULT counterIncrement ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_COUNTERRESET), displaybind, bindable] HRESULT counterReset ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_COUNTERRESET), displaybind, bindable] HRESULT counterReset ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_OUTLINE), displaybind, bindable] HRESULT outline ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_OUTLINE), displaybind, bindable] HRESULT outline ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_OUTLINEWIDTH), displaybind, bindable] HRESULT outlineWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE6_OUTLINEWIDTH), displaybind, bindable] HRESULT outlineWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_OUTLINESTYLE), displaybind, bindable] HRESULT outlineStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_OUTLINESTYLE), displaybind, bindable] HRESULT outlineStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_OUTLINECOLOR), displaybind, bindable] HRESULT outlineColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE6_OUTLINECOLOR), displaybind, bindable] HRESULT outlineColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_BOXSIZING), displaybind, bindable] HRESULT boxSizing ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_BOXSIZING), displaybind, bindable] HRESULT boxSizing ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_BORDERSPACING), displaybind, bindable] HRESULT borderSpacing ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_BORDERSPACING), displaybind, bindable] HRESULT borderSpacing ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_ORPHANS), displaybind, bindable] HRESULT orphans ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE6_ORPHANS), displaybind, bindable] HRESULT orphans ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_WIDOWS), displaybind, bindable] HRESULT widows ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE6_WIDOWS), displaybind, bindable] HRESULT widows ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_PAGEBREAKINSIDE), displaybind, bindable] HRESULT pageBreakInside ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_PAGEBREAKINSIDE), displaybind, bindable] HRESULT pageBreakInside ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_EMPTYCELLS), displaybind, bindable] HRESULT emptyCells ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_EMPTYCELLS), displaybind, bindable] HRESULT emptyCells ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_MSBLOCKPROGRESSION), displaybind, bindable] HRESULT msBlockProgression ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_MSBLOCKPROGRESSION), displaybind, bindable] HRESULT msBlockProgression ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_QUOTES), displaybind, bindable] HRESULT quotes ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_QUOTES), displaybind, bindable] HRESULT quotes ([retval, out] BSTR *p);
  };
  
  [hidden, uuid (3050f55a-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLStyle {
    properties:
    methods:
    [propput, id (DISPID_IHTMLSTYLE_FONTFAMILY), displaybind, bindable] void fontFamily (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FONTFAMILY), displaybind, bindable] BSTR fontFamily ();
    [propput, id (DISPID_IHTMLSTYLE_FONTSTYLE), displaybind, bindable] void fontStyle (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FONTSTYLE), displaybind, bindable] BSTR fontStyle ();
    [propput, id (DISPID_IHTMLSTYLE_FONTVARIANT), displaybind, bindable] void fontVariant (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FONTVARIANT), displaybind, bindable] BSTR fontVariant ();
    [propput, id (DISPID_IHTMLSTYLE_FONTWEIGHT), displaybind, bindable] void fontWeight (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FONTWEIGHT), displaybind, bindable] BSTR fontWeight ();
    [propput, id (DISPID_IHTMLSTYLE_FONTSIZE), displaybind, bindable] void fontSize (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_FONTSIZE), displaybind, bindable] VARIANT fontSize ();
    [propput, id (DISPID_IHTMLSTYLE_FONT), displaybind, bindable, nonbrowsable] void font (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FONT), displaybind, bindable, nonbrowsable] BSTR font ();
    [propput, id (DISPID_IHTMLSTYLE_COLOR), displaybind, bindable] void color (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_COLOR), displaybind, bindable] VARIANT color ();
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUND), displaybind, bindable, nonbrowsable] void background (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUND), displaybind, bindable, nonbrowsable] BSTR background ();
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDCOLOR), displaybind, bindable] void backgroundColor (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDCOLOR), displaybind, bindable] VARIANT backgroundColor ();
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDIMAGE), displaybind, bindable] void backgroundImage (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDIMAGE), displaybind, bindable] BSTR backgroundImage ();
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDREPEAT), displaybind, bindable] void backgroundRepeat (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDREPEAT), displaybind, bindable] BSTR backgroundRepeat ();
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable] void backgroundAttachment (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable] BSTR backgroundAttachment ();
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITION), displaybind, bindable] void backgroundPosition (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITION), displaybind, bindable] BSTR backgroundPosition ();
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable] void backgroundPositionX (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable] VARIANT backgroundPositionX ();
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable] void backgroundPositionY (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable] VARIANT backgroundPositionY ();
    [propput, id (DISPID_IHTMLSTYLE_WORDSPACING), displaybind, bindable] void wordSpacing (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_WORDSPACING), displaybind, bindable] VARIANT wordSpacing ();
    [propput, id (DISPID_IHTMLSTYLE_LETTERSPACING), displaybind, bindable] void letterSpacing (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_LETTERSPACING), displaybind, bindable] VARIANT letterSpacing ();
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATION), displaybind, bindable] void textDecoration (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATION), displaybind, bindable] BSTR textDecoration ();
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATIONNONE), displaybind, bindable] void textDecorationNone (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATIONNONE), displaybind, bindable] VARIANT_BOOL textDecorationNone ();
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable] void textDecorationUnderline (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable] VARIANT_BOOL textDecorationUnderline ();
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable] void textDecorationOverline (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable] VARIANT_BOOL textDecorationOverline ();
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable] void textDecorationLineThrough (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable] VARIANT_BOOL textDecorationLineThrough ();
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK), displaybind, bindable] void textDecorationBlink (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK), displaybind, bindable] VARIANT_BOOL textDecorationBlink ();
    [propput, id (DISPID_IHTMLSTYLE_VERTICALALIGN), displaybind, bindable] void verticalAlign (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_VERTICALALIGN), displaybind, bindable] VARIANT verticalAlign ();
    [propput, id (DISPID_IHTMLSTYLE_TEXTTRANSFORM), displaybind, bindable] void textTransform (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTTRANSFORM), displaybind, bindable] BSTR textTransform ();
    [propput, id (DISPID_IHTMLSTYLE_TEXTALIGN), displaybind, bindable] void textAlign (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTALIGN), displaybind, bindable] BSTR textAlign ();
    [propput, id (DISPID_IHTMLSTYLE_TEXTINDENT), displaybind, bindable] void textIndent (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTINDENT), displaybind, bindable] VARIANT textIndent ();
    [propput, id (DISPID_IHTMLSTYLE_LINEHEIGHT), displaybind, bindable] void lineHeight (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_LINEHEIGHT), displaybind, bindable] VARIANT lineHeight ();
    [propput, id (DISPID_IHTMLSTYLE_MARGINTOP), displaybind, bindable] void marginTop (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_MARGINTOP), displaybind, bindable] VARIANT marginTop ();
    [propput, id (DISPID_IHTMLSTYLE_MARGINRIGHT), displaybind, bindable] void marginRight (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_MARGINRIGHT), displaybind, bindable] VARIANT marginRight ();
    [propput, id (DISPID_IHTMLSTYLE_MARGINBOTTOM), displaybind, bindable] void marginBottom (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_MARGINBOTTOM), displaybind, bindable] VARIANT marginBottom ();
    [propput, id (DISPID_IHTMLSTYLE_MARGINLEFT), displaybind, bindable] void marginLeft (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_MARGINLEFT), displaybind, bindable] VARIANT marginLeft ();
    [propput, id (DISPID_IHTMLSTYLE_MARGIN), displaybind, bindable, nonbrowsable] void margin (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_MARGIN), displaybind, bindable, nonbrowsable] BSTR margin ();
    [propput, id (DISPID_IHTMLSTYLE_PADDINGTOP), displaybind, bindable] void paddingTop (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_PADDINGTOP), displaybind, bindable] VARIANT paddingTop ();
    [propput, id (DISPID_IHTMLSTYLE_PADDINGRIGHT), displaybind, bindable] void paddingRight (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_PADDINGRIGHT), displaybind, bindable] VARIANT paddingRight ();
    [propput, id (DISPID_IHTMLSTYLE_PADDINGBOTTOM), displaybind, bindable] void paddingBottom (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_PADDINGBOTTOM), displaybind, bindable] VARIANT paddingBottom ();
    [propput, id (DISPID_IHTMLSTYLE_PADDINGLEFT), displaybind, bindable] void paddingLeft (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_PADDINGLEFT), displaybind, bindable] VARIANT paddingLeft ();
    [propput, id (DISPID_IHTMLSTYLE_PADDING), displaybind, bindable, nonbrowsable] void padding (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_PADDING), displaybind, bindable, nonbrowsable] BSTR padding ();
    [propput, id (DISPID_IHTMLSTYLE_BORDER), displaybind, bindable, nonbrowsable] void border (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDER), displaybind, bindable, nonbrowsable] BSTR border ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERTOP), displaybind, bindable] void borderTop (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERTOP), displaybind, bindable] BSTR borderTop ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERRIGHT), displaybind, bindable] void borderRight (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERRIGHT), displaybind, bindable] BSTR borderRight ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERBOTTOM), displaybind, bindable] void borderBottom (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERBOTTOM), displaybind, bindable] BSTR borderBottom ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERLEFT), displaybind, bindable] void borderLeft (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERLEFT), displaybind, bindable] BSTR borderLeft ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERCOLOR), displaybind, bindable] void borderColor (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERCOLOR), displaybind, bindable] BSTR borderColor ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERTOPCOLOR), displaybind, bindable] void borderTopColor (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERTOPCOLOR), displaybind, bindable] VARIANT borderTopColor ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR), displaybind, bindable] void borderRightColor (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR), displaybind, bindable] VARIANT borderRightColor ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable] void borderBottomColor (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable] VARIANT borderBottomColor ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERLEFTCOLOR), displaybind, bindable] void borderLeftColor (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERLEFTCOLOR), displaybind, bindable] VARIANT borderLeftColor ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERWIDTH), displaybind, bindable] void borderWidth (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERWIDTH), displaybind, bindable] BSTR borderWidth ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERTOPWIDTH), displaybind, bindable] void borderTopWidth (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERTOPWIDTH), displaybind, bindable] VARIANT borderTopWidth ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH), displaybind, bindable] void borderRightWidth (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH), displaybind, bindable] VARIANT borderRightWidth ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable] void borderBottomWidth (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable] VARIANT borderBottomWidth ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERLEFTWIDTH), displaybind, bindable] void borderLeftWidth (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERLEFTWIDTH), displaybind, bindable] VARIANT borderLeftWidth ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERSTYLE), displaybind, bindable] void borderStyle (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERSTYLE), displaybind, bindable] BSTR borderStyle ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERTOPSTYLE), displaybind, bindable] void borderTopStyle (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERTOPSTYLE), displaybind, bindable] BSTR borderTopStyle ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE), displaybind, bindable] void borderRightStyle (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE), displaybind, bindable] BSTR borderRightStyle ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable] void borderBottomStyle (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable] BSTR borderBottomStyle ();
    [propput, id (DISPID_IHTMLSTYLE_BORDERLEFTSTYLE), displaybind, bindable] void borderLeftStyle (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERLEFTSTYLE), displaybind, bindable] BSTR borderLeftStyle ();
    [propput, id (DISPID_IHTMLSTYLE_WIDTH), displaybind, bindable] void width (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_WIDTH), displaybind, bindable] VARIANT width ();
    [propput, id (DISPID_IHTMLSTYLE_HEIGHT), displaybind, bindable] void height (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_HEIGHT), displaybind, bindable] VARIANT height ();
    [propput, id (DISPID_IHTMLSTYLE_STYLEFLOAT), displaybind, bindable] void styleFloat (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_STYLEFLOAT), displaybind, bindable] BSTR styleFloat ();
    [propput, id (DISPID_IHTMLSTYLE_CLEAR), displaybind, bindable] void clear (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_CLEAR), displaybind, bindable] BSTR clear ();
    [propput, id (DISPID_IHTMLSTYLE_DISPLAY), displaybind, bindable] void display (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_DISPLAY), displaybind, bindable] BSTR display ();
    [propput, id (DISPID_IHTMLSTYLE_VISIBILITY), displaybind, bindable] void visibility (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_VISIBILITY), displaybind, bindable] BSTR visibility ();
    [propput, id (DISPID_IHTMLSTYLE_LISTSTYLETYPE), displaybind, bindable] void listStyleType (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_LISTSTYLETYPE), displaybind, bindable] BSTR listStyleType ();
    [propput, id (DISPID_IHTMLSTYLE_LISTSTYLEPOSITION), displaybind, bindable] void listStylePosition (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_LISTSTYLEPOSITION), displaybind, bindable] BSTR listStylePosition ();
    [propput, id (DISPID_IHTMLSTYLE_LISTSTYLEIMAGE), displaybind, bindable] void listStyleImage (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_LISTSTYLEIMAGE), displaybind, bindable] BSTR listStyleImage ();
    [propput, id (DISPID_IHTMLSTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable] void listStyle (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable] BSTR listStyle ();
    [propput, id (DISPID_IHTMLSTYLE_WHITESPACE), displaybind, bindable] void whiteSpace (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_WHITESPACE), displaybind, bindable] BSTR whiteSpace ();
    [propput, id (DISPID_IHTMLSTYLE_TOP), displaybind, bindable] void top (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_TOP), displaybind, bindable] VARIANT top ();
    [propput, id (DISPID_IHTMLSTYLE_LEFT), displaybind, bindable] void left (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_LEFT), displaybind, bindable] VARIANT left ();
    [propput, id (DISPID_IHTMLSTYLE_ZINDEX), displaybind, bindable] void zIndex (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_ZINDEX), displaybind, bindable] VARIANT zIndex ();
    [propput, id (DISPID_IHTMLSTYLE_OVERFLOW), displaybind, bindable] void overflow (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_OVERFLOW), displaybind, bindable] BSTR overflow ();
    [propput, id (DISPID_IHTMLSTYLE_PAGEBREAKBEFORE), displaybind, bindable] void pageBreakBefore (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_PAGEBREAKBEFORE), displaybind, bindable] BSTR pageBreakBefore ();
    [propput, id (DISPID_IHTMLSTYLE_PAGEBREAKAFTER), displaybind, bindable] void pageBreakAfter (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_PAGEBREAKAFTER), displaybind, bindable] BSTR pageBreakAfter ();
    [propput, id (DISPID_IHTMLSTYLE_CSSTEXT), displaybind, bindable, nonbrowsable] void cssText (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_CSSTEXT), displaybind, bindable, nonbrowsable] BSTR cssText ();
    [propput, id (DISPID_IHTMLSTYLE_PIXELTOP), displaybind, bindable, hidden] void pixelTop (long v);
    [propget, id (DISPID_IHTMLSTYLE_PIXELTOP), displaybind, bindable, hidden] long pixelTop ();
    [propput, id (DISPID_IHTMLSTYLE_PIXELLEFT), displaybind, bindable, hidden] void pixelLeft (long v);
    [propget, id (DISPID_IHTMLSTYLE_PIXELLEFT), displaybind, bindable, hidden] long pixelLeft ();
    [propput, id (DISPID_IHTMLSTYLE_PIXELWIDTH), displaybind, bindable, hidden] void pixelWidth (long v);
    [propget, id (DISPID_IHTMLSTYLE_PIXELWIDTH), displaybind, bindable, hidden] long pixelWidth ();
    [propput, id (DISPID_IHTMLSTYLE_PIXELHEIGHT), displaybind, bindable, hidden] void pixelHeight (long v);
    [propget, id (DISPID_IHTMLSTYLE_PIXELHEIGHT), displaybind, bindable, hidden] long pixelHeight ();
    [propput, id (DISPID_IHTMLSTYLE_POSTOP), displaybind, bindable] void posTop (float v);
    [propget, id (DISPID_IHTMLSTYLE_POSTOP), displaybind, bindable] float posTop ();
    [propput, id (DISPID_IHTMLSTYLE_POSLEFT), displaybind, bindable] void posLeft (float v);
    [propget, id (DISPID_IHTMLSTYLE_POSLEFT), displaybind, bindable] float posLeft ();
    [propput, id (DISPID_IHTMLSTYLE_POSWIDTH), displaybind, bindable] void posWidth (float v);
    [propget, id (DISPID_IHTMLSTYLE_POSWIDTH), displaybind, bindable] float posWidth ();
    [propput, id (DISPID_IHTMLSTYLE_POSHEIGHT), displaybind, bindable] void posHeight (float v);
    [propget, id (DISPID_IHTMLSTYLE_POSHEIGHT), displaybind, bindable] float posHeight ();
    [propput, id (DISPID_IHTMLSTYLE_CURSOR), displaybind, bindable] void cursor (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_CURSOR), displaybind, bindable] BSTR cursor ();
    [propput, id (DISPID_IHTMLSTYLE_CLIP), displaybind, bindable] void clip (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_CLIP), displaybind, bindable] BSTR clip ();
    [propput, id (DISPID_IHTMLSTYLE_FILTER), displaybind, bindable] void filter (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FILTER), displaybind, bindable] BSTR filter ();
    [id (DISPID_IHTMLSTYLE_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLSTYLE_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLSTYLE_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLSTYLE_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLSTYLE2_TABLELAYOUT), displaybind, bindable] void tableLayout (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_TABLELAYOUT), displaybind, bindable] BSTR tableLayout ();
    [propput, id (DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), displaybind, bindable] void borderCollapse (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), displaybind, bindable] BSTR borderCollapse ();
    [propput, id (DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable] void direction (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable] BSTR direction ();
    [propput, id (DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable] void behavior (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable] BSTR behavior ();
    [id (DISPID_IHTMLSTYLE2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLSTYLE2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLSTYLE2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable] void position (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable] BSTR position ();
    [propput, id (DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable] void unicodeBidi (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable] BSTR unicodeBidi ();
    [propput, id (DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable] void bottom (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable] VARIANT bottom ();
    [propput, id (DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable] void right (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable] VARIANT right ();
    [propput, id (DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden] void pixelBottom (long v);
    [propget, id (DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden] long pixelBottom ();
    [propput, id (DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden] void pixelRight (long v);
    [propget, id (DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden] long pixelRight ();
    [propput, id (DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable] void posBottom (float v);
    [propget, id (DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable] float posBottom ();
    [propput, id (DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable] void posRight (float v);
    [propget, id (DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable] float posRight ();
    [propput, id (DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable] void imeMode (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable] BSTR imeMode ();
    [propput, id (DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable] void rubyAlign (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable] BSTR rubyAlign ();
    [propput, id (DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable] void rubyPosition (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable] BSTR rubyPosition ();
    [propput, id (DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable] void rubyOverhang (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable] BSTR rubyOverhang ();
    [propput, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable] void layoutGridChar (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable] VARIANT layoutGridChar ();
    [propput, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable] void layoutGridLine (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable] VARIANT layoutGridLine ();
    [propput, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable] void layoutGridMode (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable] BSTR layoutGridMode ();
    [propput, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable] void layoutGridType (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable] BSTR layoutGridType ();
    [propput, id (DISPID_IHTMLSTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable] void layoutGrid (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable] BSTR layoutGrid ();
    [propput, id (DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable] void wordBreak (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable] BSTR wordBreak ();
    [propput, id (DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable] void lineBreak (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable] BSTR lineBreak ();
    [propput, id (DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable] void textJustify (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable] BSTR textJustify ();
    [propput, id (DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable] void textJustifyTrim (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable] BSTR textJustifyTrim ();
    [propput, id (DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable] void textKashida (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable] VARIANT textKashida ();
    [propput, id (DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable] void textAutospace (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable] BSTR textAutospace ();
    [propput, id (DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable] void overflowX (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable] BSTR overflowX ();
    [propput, id (DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable] void overflowY (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable] BSTR overflowY ();
    [propput, id (DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable] void accelerator (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable] BSTR accelerator ();
    [propput, id (DISPID_IHTMLSTYLE3_LAYOUTFLOW), displaybind, bindable] void layoutFlow (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE3_LAYOUTFLOW), displaybind, bindable] BSTR layoutFlow ();
    [propput, id (DISPID_IHTMLSTYLE3_ZOOM), displaybind, bindable] void zoom (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_ZOOM), displaybind, bindable] VARIANT zoom ();
    [propput, id (DISPID_IHTMLSTYLE3_WORDWRAP), displaybind, bindable] void wordWrap (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE3_WORDWRAP), displaybind, bindable] BSTR wordWrap ();
    [propput, id (DISPID_IHTMLSTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable] void textUnderlinePosition (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable] BSTR textUnderlinePosition ();
    [propput, id (DISPID_IHTMLSTYLE3_SCROLLBARBASECOLOR), displaybind, bindable] void scrollbarBaseColor (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_SCROLLBARBASECOLOR), displaybind, bindable] VARIANT scrollbarBaseColor ();
    [propput, id (DISPID_IHTMLSTYLE3_SCROLLBARFACECOLOR), displaybind, bindable] void scrollbarFaceColor (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_SCROLLBARFACECOLOR), displaybind, bindable] VARIANT scrollbarFaceColor ();
    [propput, id (DISPID_IHTMLSTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] void scrollbar3dLightColor (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] VARIANT scrollbar3dLightColor ();
    [propput, id (DISPID_IHTMLSTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable] void scrollbarShadowColor (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable] VARIANT scrollbarShadowColor ();
    [propput, id (DISPID_IHTMLSTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] void scrollbarHighlightColor (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] VARIANT scrollbarHighlightColor ();
    [propput, id (DISPID_IHTMLSTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] void scrollbarDarkShadowColor (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] VARIANT scrollbarDarkShadowColor ();
    [propput, id (DISPID_IHTMLSTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable] void scrollbarArrowColor (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable] VARIANT scrollbarArrowColor ();
    [propput, id (DISPID_IHTMLSTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable] void scrollbarTrackColor (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable] VARIANT scrollbarTrackColor ();
    [propput, id (DISPID_IHTMLSTYLE3_WRITINGMODE), displaybind, bindable] void writingMode (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE3_WRITINGMODE), displaybind, bindable] BSTR writingMode ();
    [propput, id (DISPID_IHTMLSTYLE3_TEXTALIGNLAST), displaybind, bindable] void textAlignLast (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE3_TEXTALIGNLAST), displaybind, bindable] BSTR textAlignLast ();
    [propput, id (DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE), displaybind, bindable] void textKashidaSpace (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE), displaybind, bindable] VARIANT textKashidaSpace ();
    [propput, id (DISPID_IHTMLSTYLE4_TEXTOVERFLOW), displaybind, bindable] void textOverflow (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE4_TEXTOVERFLOW), displaybind, bindable] BSTR textOverflow ();
    [propput, id (DISPID_IHTMLSTYLE4_MINHEIGHT), displaybind, bindable] void minHeight (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE4_MINHEIGHT), displaybind, bindable] VARIANT minHeight ();
    [propput, id (DISPID_IHTMLSTYLE5_MSINTERPOLATIONMODE), displaybind, bindable] void msInterpolationMode (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE5_MSINTERPOLATIONMODE), displaybind, bindable] BSTR msInterpolationMode ();
    [propput, id (DISPID_IHTMLSTYLE5_MAXHEIGHT), displaybind, bindable] void maxHeight (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE5_MAXHEIGHT), displaybind, bindable] VARIANT maxHeight ();
    [propput, id (DISPID_IHTMLSTYLE5_MINWIDTH), displaybind, bindable] void minWidth (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE5_MINWIDTH), displaybind, bindable] VARIANT minWidth ();
    [propput, id (DISPID_IHTMLSTYLE5_MAXWIDTH), displaybind, bindable] void maxWidth (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE5_MAXWIDTH), displaybind, bindable] VARIANT maxWidth ();
    [propput, id (DISPID_IHTMLSTYLE6_CONTENT), displaybind, bindable] void content (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_CONTENT), displaybind, bindable] BSTR content ();
    [propput, id (DISPID_IHTMLSTYLE6_CAPTIONSIDE), displaybind, bindable] void captionSide (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_CAPTIONSIDE), displaybind, bindable] BSTR captionSide ();
    [propput, id (DISPID_IHTMLSTYLE6_COUNTERINCREMENT), displaybind, bindable] void counterIncrement (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_COUNTERINCREMENT), displaybind, bindable] BSTR counterIncrement ();
    [propput, id (DISPID_IHTMLSTYLE6_COUNTERRESET), displaybind, bindable] void counterReset (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_COUNTERRESET), displaybind, bindable] BSTR counterReset ();
    [propput, id (DISPID_IHTMLSTYLE6_OUTLINE), displaybind, bindable] void outline (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_OUTLINE), displaybind, bindable] BSTR outline ();
    [propput, id (DISPID_IHTMLSTYLE6_OUTLINEWIDTH), displaybind, bindable] void outlineWidth (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE6_OUTLINEWIDTH), displaybind, bindable] VARIANT outlineWidth ();
    [propput, id (DISPID_IHTMLSTYLE6_OUTLINESTYLE), displaybind, bindable] void outlineStyle (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_OUTLINESTYLE), displaybind, bindable] BSTR outlineStyle ();
    [propput, id (DISPID_IHTMLSTYLE6_OUTLINECOLOR), displaybind, bindable] void outlineColor (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE6_OUTLINECOLOR), displaybind, bindable] VARIANT outlineColor ();
    [propput, id (DISPID_IHTMLSTYLE6_BOXSIZING), displaybind, bindable] void boxSizing (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_BOXSIZING), displaybind, bindable] BSTR boxSizing ();
    [propput, id (DISPID_IHTMLSTYLE6_BORDERSPACING), displaybind, bindable] void borderSpacing (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_BORDERSPACING), displaybind, bindable] BSTR borderSpacing ();
    [propput, id (DISPID_IHTMLSTYLE6_ORPHANS), displaybind, bindable] void orphans (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE6_ORPHANS), displaybind, bindable] VARIANT orphans ();
    [propput, id (DISPID_IHTMLSTYLE6_WIDOWS), displaybind, bindable] void widows (VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE6_WIDOWS), displaybind, bindable] VARIANT widows ();
    [propput, id (DISPID_IHTMLSTYLE6_PAGEBREAKINSIDE), displaybind, bindable] void pageBreakInside (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_PAGEBREAKINSIDE), displaybind, bindable] BSTR pageBreakInside ();
    [propput, id (DISPID_IHTMLSTYLE6_EMPTYCELLS), displaybind, bindable] void emptyCells (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_EMPTYCELLS), displaybind, bindable] BSTR emptyCells ();
    [propput, id (DISPID_IHTMLSTYLE6_MSBLOCKPROGRESSION), displaybind, bindable] void msBlockProgression (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_MSBLOCKPROGRESSION), displaybind, bindable] BSTR msBlockProgression ();
    [propput, id (DISPID_IHTMLSTYLE6_QUOTES), displaybind, bindable] void quotes (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_QUOTES), displaybind, bindable] BSTR quotes ();
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LENGTH)] long length ();
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PARENTRULE)] VARIANT parentRule ();
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYVALUE)] BSTR getPropertyValue ([in] BSTR bstrPropertyName);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYPRIORITY)] BSTR getPropertyPriority ([in] BSTR bstrPropertyName);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_REMOVEPROPERTY)] BSTR removeProperty ([in] BSTR bstrPropertyName);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_SETPROPERTY)] void setProperty ([in] BSTR bstrPropertyName,[in] VARIANT *pvarPropertyValue,[defaultvalue (NULL), in] VARIANT *pvarPropertyPriority);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_ITEM)] BSTR item ([in] long index);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLCHAINING), displaybind, bindable] void msScrollChaining (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLCHAINING), displaybind, bindable] BSTR msScrollChaining ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable] void msContentZooming (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable] BSTR msContentZooming ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable] void msContentZoomSnapType (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable] BSTR msContentZoomSnapType ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable] void msScrollRails (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable] BSTR msScrollRails ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable] void msContentZoomChaining (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable] BSTR msContentZoomChaining ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable] void msScrollSnapType (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable] BSTR msScrollSnapType ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable] void msContentZoomLimit (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable] BSTR msContentZoomLimit ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable] void msContentZoomSnap (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable] BSTR msContentZoomSnap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable] void msContentZoomSnapPoints (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable] BSTR msContentZoomSnapPoints ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable] void msContentZoomLimitMin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable] VARIANT msContentZoomLimitMin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable] void msContentZoomLimitMax (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable] VARIANT msContentZoomLimitMax ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable] void msScrollSnapX (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable] BSTR msScrollSnapX ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable] void msScrollSnapY (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable] BSTR msScrollSnapY ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable] void msScrollSnapPointsX (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable] BSTR msScrollSnapPointsX ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable] void msScrollSnapPointsY (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable] BSTR msScrollSnapPointsY ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable] void msGridColumn (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable] VARIANT msGridColumn ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable] void msGridColumnAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable] BSTR msGridColumnAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable] void msGridColumns (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable] BSTR msGridColumns ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable] void msGridColumnSpan (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable] VARIANT msGridColumnSpan ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable] void msGridRow (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable] VARIANT msGridRow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable] void msGridRowAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable] BSTR msGridRowAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable] void msGridRows (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable] BSTR msGridRows ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable] void msGridRowSpan (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable] VARIANT msGridRowSpan ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable] void msWrapThrough (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable] BSTR msWrapThrough ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable] void msWrapMargin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable] VARIANT msWrapMargin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable] void msWrapFlow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable] BSTR msWrapFlow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable] void msAnimationName (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable] BSTR msAnimationName ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable] void msAnimationDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable] BSTR msAnimationDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable] void msAnimationTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable] BSTR msAnimationTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable] void msAnimationDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable] BSTR msAnimationDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable] void msAnimationDirection (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable] BSTR msAnimationDirection ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable] void msAnimationPlayState (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable] BSTR msAnimationPlayState ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable] void msAnimationIterationCount (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable] BSTR msAnimationIterationCount ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable] void msAnimation (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable] BSTR msAnimation ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable] void msAnimationFillMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable] BSTR msAnimationFillMode ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable] void colorInterpolationFilters (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable] BSTR colorInterpolationFilters ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable] void columnCount (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable] VARIANT columnCount ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable] void columnWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable] VARIANT columnWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable] void columnGap (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable] VARIANT columnGap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable] void columnFill (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable] BSTR columnFill ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable] void columnSpan (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable] BSTR columnSpan ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNS), displaybind, bindable, nonbrowsable] void columns (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNS), displaybind, bindable, nonbrowsable] BSTR columns ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable] void columnRule (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable] BSTR columnRule ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable] void columnRuleColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable] VARIANT columnRuleColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable] void columnRuleStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable] BSTR columnRuleStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable] void columnRuleWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable] VARIANT columnRuleWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable] void breakBefore (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable] BSTR breakBefore ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable] void breakAfter (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable] BSTR breakAfter ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable] void breakInside (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable] BSTR breakInside ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable] void floodColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable] VARIANT floodColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable] void floodOpacity (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable] VARIANT floodOpacity ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable] void lightingColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable] VARIANT lightingColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable] void msScrollLimitXMin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable] VARIANT msScrollLimitXMin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable] void msScrollLimitYMin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable] VARIANT msScrollLimitYMin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable] void msScrollLimitXMax (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable] VARIANT msScrollLimitXMax ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable] void msScrollLimitYMax (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable] VARIANT msScrollLimitYMax ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable] void msScrollLimit (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable] BSTR msScrollLimit ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable] void textShadow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable] BSTR textShadow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable] void msFlowFrom (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable] BSTR msFlowFrom ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable] void msFlowInto (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable] BSTR msFlowInto ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable] void msHyphens (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable] BSTR msHyphens ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable] void msHyphenateLimitZone (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable] VARIANT msHyphenateLimitZone ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable] void msHyphenateLimitChars (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable] BSTR msHyphenateLimitChars ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable] void msHyphenateLimitLines (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable] VARIANT msHyphenateLimitLines ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable] void msHighContrastAdjust (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable] BSTR msHighContrastAdjust ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable] void enableBackground (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable] BSTR enableBackground ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable] void msFontFeatureSettings (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable] BSTR msFontFeatureSettings ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable] void msUserSelect (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable] BSTR msUserSelect ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable] void msOverflowStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable] BSTR msOverflowStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable] void msTransformStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable] BSTR msTransformStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable] void msBackfaceVisibility (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable] BSTR msBackfaceVisibility ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable] void msPerspective (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable] VARIANT msPerspective ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable] void msPerspectiveOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable] BSTR msPerspectiveOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable] void msTransitionProperty (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable] BSTR msTransitionProperty ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable] void msTransitionDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable] BSTR msTransitionDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable] void msTransitionTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable] BSTR msTransitionTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable] void msTransitionDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable] BSTR msTransitionDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable] void msTransition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable] BSTR msTransition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable] void msTouchAction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable] BSTR msTouchAction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable] void msScrollTranslation (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable] BSTR msScrollTranslation ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable] void msFlex (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable] BSTR msFlex ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable] void msFlexPositive (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable] VARIANT msFlexPositive ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable] void msFlexNegative (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable] VARIANT msFlexNegative ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable] void msFlexPreferredSize (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable] VARIANT msFlexPreferredSize ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable] void msFlexFlow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable] BSTR msFlexFlow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable] void msFlexDirection (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable] BSTR msFlexDirection ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable] void msFlexWrap (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable] BSTR msFlexWrap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable] void msFlexAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable] BSTR msFlexAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable] void msFlexItemAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable] BSTR msFlexItemAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable] void msFlexPack (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable] BSTR msFlexPack ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable] void msFlexLinePack (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable] BSTR msFlexLinePack ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable] void msFlexOrder (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable] VARIANT msFlexOrder ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable] void msTouchSelect (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable] BSTR msTouchSelect ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable] void transform (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable] BSTR transform ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable] void transformOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable] BSTR transformOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable] void transformStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable] BSTR transformStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable] void backfaceVisibility (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable] BSTR backfaceVisibility ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable] void perspective (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable] VARIANT perspective ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable] void perspectiveOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable] BSTR perspectiveOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable] void transitionProperty (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable] BSTR transitionProperty ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable] void transitionDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable] BSTR transitionDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable] void transitionTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable] BSTR transitionTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable] void transitionDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable] BSTR transitionDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable] void transition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable] BSTR transition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable] void fontFeatureSettings (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable] BSTR fontFeatureSettings ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable] void animationName (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable] BSTR animationName ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable] void animationDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable] BSTR animationDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable] void animationTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable] BSTR animationTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable] void animationDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable] BSTR animationDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable] void animationDirection (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable] BSTR animationDirection ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable] void animationPlayState (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable] BSTR animationPlayState ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable] void animationIterationCount (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable] BSTR animationIterationCount ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), displaybind, bindable] void animation (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), displaybind, bindable] BSTR animation ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), displaybind, bindable] void animationFillMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), displaybind, bindable] BSTR animationFillMode ();
    [id (DISPID_IHTMLSTYLEENABLED_MSGETPROPERTYENABLED)] VARIANT_BOOL msGetPropertyEnabled ([in] BSTR name);
    [id (DISPID_IHTMLSTYLEENABLED_MSPUTPROPERTYENABLED)] void msPutPropertyEnabled ([in] BSTR name,[in] VARIANT_BOOL b);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  
  [noncreatable, uuid (3050f285-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLStyle {
    [default] dispinterface DispHTMLStyle;
    interface IHTMLStyle;
    interface IHTMLStyle2;
    interface IHTMLStyle3;
    interface IHTMLStyle4;
    interface IHTMLStyle5;
    interface IHTMLStyle6;
    interface IHTMLCSSStyleDeclaration;
    interface IHTMLCSSStyleDeclaration2;
    interface IHTMLStyleEnabled;
    interface IHTMLDOMConstructor;
  };
  
  [hidden, uuid (3050f55c-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLRuleStyle {
    properties:
    methods:
    [propput, id (DISPID_IHTMLRULESTYLE_FONTFAMILY), displaybind, bindable] void fontFamily (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTFAMILY), displaybind, bindable] BSTR fontFamily ();
    [propput, id (DISPID_IHTMLRULESTYLE_FONTSTYLE), displaybind, bindable] void fontStyle (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTSTYLE), displaybind, bindable] BSTR fontStyle ();
    [propput, id (DISPID_IHTMLRULESTYLE_FONTVARIANT), displaybind, bindable] void fontVariant (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTVARIANT), displaybind, bindable] BSTR fontVariant ();
    [propput, id (DISPID_IHTMLRULESTYLE_FONTWEIGHT), displaybind, bindable] void fontWeight (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTWEIGHT), displaybind, bindable] BSTR fontWeight ();
    [propput, id (DISPID_IHTMLRULESTYLE_FONTSIZE), displaybind, bindable] void fontSize (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTSIZE), displaybind, bindable] VARIANT fontSize ();
    [propput, id (DISPID_IHTMLRULESTYLE_FONT), displaybind, bindable, nonbrowsable] void font (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONT), displaybind, bindable, nonbrowsable] BSTR font ();
    [propput, id (DISPID_IHTMLRULESTYLE_COLOR), displaybind, bindable] void color (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_COLOR), displaybind, bindable] VARIANT color ();
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUND), displaybind, bindable, nonbrowsable] void background (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUND), displaybind, bindable, nonbrowsable] BSTR background ();
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR), displaybind, bindable] void backgroundColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR), displaybind, bindable] VARIANT backgroundColor ();
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE), displaybind, bindable] void backgroundImage (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE), displaybind, bindable] BSTR backgroundImage ();
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT), displaybind, bindable] void backgroundRepeat (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT), displaybind, bindable] BSTR backgroundRepeat ();
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT), displaybind, bindable] void backgroundAttachment (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT), displaybind, bindable] BSTR backgroundAttachment ();
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION), displaybind, bindable] void backgroundPosition (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION), displaybind, bindable] BSTR backgroundPosition ();
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX), displaybind, bindable] void backgroundPositionX (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX), displaybind, bindable] VARIANT backgroundPositionX ();
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY), displaybind, bindable] void backgroundPositionY (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY), displaybind, bindable] VARIANT backgroundPositionY ();
    [propput, id (DISPID_IHTMLRULESTYLE_WORDSPACING), displaybind, bindable] void wordSpacing (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_WORDSPACING), displaybind, bindable] VARIANT wordSpacing ();
    [propput, id (DISPID_IHTMLRULESTYLE_LETTERSPACING), displaybind, bindable] void letterSpacing (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_LETTERSPACING), displaybind, bindable] VARIANT letterSpacing ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATION), displaybind, bindable] void textDecoration (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATION), displaybind, bindable] BSTR textDecoration ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE), displaybind, bindable] void textDecorationNone (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE), displaybind, bindable] VARIANT_BOOL textDecorationNone ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable] void textDecorationUnderline (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable] VARIANT_BOOL textDecorationUnderline ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable] void textDecorationOverline (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable] VARIANT_BOOL textDecorationOverline ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable] void textDecorationLineThrough (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable] VARIANT_BOOL textDecorationLineThrough ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK), displaybind, bindable] void textDecorationBlink (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK), displaybind, bindable] VARIANT_BOOL textDecorationBlink ();
    [propput, id (DISPID_IHTMLRULESTYLE_VERTICALALIGN), displaybind, bindable] void verticalAlign (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_VERTICALALIGN), displaybind, bindable] VARIANT verticalAlign ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTTRANSFORM), displaybind, bindable] void textTransform (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTTRANSFORM), displaybind, bindable] BSTR textTransform ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTALIGN), displaybind, bindable] void textAlign (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTALIGN), displaybind, bindable] BSTR textAlign ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTINDENT), displaybind, bindable] void textIndent (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTINDENT), displaybind, bindable] VARIANT textIndent ();
    [propput, id (DISPID_IHTMLRULESTYLE_LINEHEIGHT), displaybind, bindable] void lineHeight (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_LINEHEIGHT), displaybind, bindable] VARIANT lineHeight ();
    [propput, id (DISPID_IHTMLRULESTYLE_MARGINTOP), displaybind, bindable] void marginTop (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGINTOP), displaybind, bindable] VARIANT marginTop ();
    [propput, id (DISPID_IHTMLRULESTYLE_MARGINRIGHT), displaybind, bindable] void marginRight (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGINRIGHT), displaybind, bindable] VARIANT marginRight ();
    [propput, id (DISPID_IHTMLRULESTYLE_MARGINBOTTOM), displaybind, bindable] void marginBottom (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGINBOTTOM), displaybind, bindable] VARIANT marginBottom ();
    [propput, id (DISPID_IHTMLRULESTYLE_MARGINLEFT), displaybind, bindable] void marginLeft (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGINLEFT), displaybind, bindable] VARIANT marginLeft ();
    [propput, id (DISPID_IHTMLRULESTYLE_MARGIN), displaybind, bindable, nonbrowsable] void margin (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGIN), displaybind, bindable, nonbrowsable] BSTR margin ();
    [propput, id (DISPID_IHTMLRULESTYLE_PADDINGTOP), displaybind, bindable] void paddingTop (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDINGTOP), displaybind, bindable] VARIANT paddingTop ();
    [propput, id (DISPID_IHTMLRULESTYLE_PADDINGRIGHT), displaybind, bindable] void paddingRight (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDINGRIGHT), displaybind, bindable] VARIANT paddingRight ();
    [propput, id (DISPID_IHTMLRULESTYLE_PADDINGBOTTOM), displaybind, bindable] void paddingBottom (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDINGBOTTOM), displaybind, bindable] VARIANT paddingBottom ();
    [propput, id (DISPID_IHTMLRULESTYLE_PADDINGLEFT), displaybind, bindable] void paddingLeft (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDINGLEFT), displaybind, bindable] VARIANT paddingLeft ();
    [propput, id (DISPID_IHTMLRULESTYLE_PADDING), displaybind, bindable, nonbrowsable] void padding (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDING), displaybind, bindable, nonbrowsable] BSTR padding ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDER), displaybind, bindable, nonbrowsable] void border (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDER), displaybind, bindable, nonbrowsable] BSTR border ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERTOP), displaybind, bindable] void borderTop (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERTOP), displaybind, bindable] BSTR borderTop ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERRIGHT), displaybind, bindable] void borderRight (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERRIGHT), displaybind, bindable] BSTR borderRight ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOM), displaybind, bindable] void borderBottom (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOM), displaybind, bindable] BSTR borderBottom ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERLEFT), displaybind, bindable] void borderLeft (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERLEFT), displaybind, bindable] BSTR borderLeft ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERCOLOR), displaybind, bindable] void borderColor (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERCOLOR), displaybind, bindable] BSTR borderColor ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR), displaybind, bindable] void borderTopColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR), displaybind, bindable] VARIANT borderTopColor ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR), displaybind, bindable] void borderRightColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR), displaybind, bindable] VARIANT borderRightColor ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR), displaybind, bindable] void borderBottomColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR), displaybind, bindable] VARIANT borderBottomColor ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR), displaybind, bindable] void borderLeftColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR), displaybind, bindable] VARIANT borderLeftColor ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERWIDTH), displaybind, bindable] void borderWidth (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERWIDTH), displaybind, bindable] BSTR borderWidth ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH), displaybind, bindable] void borderTopWidth (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH), displaybind, bindable] VARIANT borderTopWidth ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH), displaybind, bindable] void borderRightWidth (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH), displaybind, bindable] VARIANT borderRightWidth ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH), displaybind, bindable] void borderBottomWidth (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH), displaybind, bindable] VARIANT borderBottomWidth ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH), displaybind, bindable] void borderLeftWidth (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH), displaybind, bindable] VARIANT borderLeftWidth ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERSTYLE), displaybind, bindable] void borderStyle (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERSTYLE), displaybind, bindable] BSTR borderStyle ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE), displaybind, bindable] void borderTopStyle (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE), displaybind, bindable] BSTR borderTopStyle ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE), displaybind, bindable] void borderRightStyle (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE), displaybind, bindable] BSTR borderRightStyle ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE), displaybind, bindable] void borderBottomStyle (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE), displaybind, bindable] BSTR borderBottomStyle ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE), displaybind, bindable] void borderLeftStyle (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE), displaybind, bindable] BSTR borderLeftStyle ();
    [propput, id (DISPID_IHTMLRULESTYLE_WIDTH), displaybind, bindable] void width (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_WIDTH), displaybind, bindable] VARIANT width ();
    [propput, id (DISPID_IHTMLRULESTYLE_HEIGHT), displaybind, bindable] void height (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_HEIGHT), displaybind, bindable] VARIANT height ();
    [propput, id (DISPID_IHTMLRULESTYLE_STYLEFLOAT), displaybind, bindable] void styleFloat (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_STYLEFLOAT), displaybind, bindable] BSTR styleFloat ();
    [propput, id (DISPID_IHTMLRULESTYLE_CLEAR), displaybind, bindable] void clear (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_CLEAR), displaybind, bindable] BSTR clear ();
    [propput, id (DISPID_IHTMLRULESTYLE_DISPLAY), displaybind, bindable] void display (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_DISPLAY), displaybind, bindable] BSTR display ();
    [propput, id (DISPID_IHTMLRULESTYLE_VISIBILITY), displaybind, bindable] void visibility (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_VISIBILITY), displaybind, bindable] BSTR visibility ();
    [propput, id (DISPID_IHTMLRULESTYLE_LISTSTYLETYPE), displaybind, bindable] void listStyleType (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_LISTSTYLETYPE), displaybind, bindable] BSTR listStyleType ();
    [propput, id (DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION), displaybind, bindable] void listStylePosition (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION), displaybind, bindable] BSTR listStylePosition ();
    [propput, id (DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE), displaybind, bindable] void listStyleImage (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE), displaybind, bindable] BSTR listStyleImage ();
    [propput, id (DISPID_IHTMLRULESTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable] void listStyle (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable] BSTR listStyle ();
    [propput, id (DISPID_IHTMLRULESTYLE_WHITESPACE), displaybind, bindable] void whiteSpace (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_WHITESPACE), displaybind, bindable] BSTR whiteSpace ();
    [propput, id (DISPID_IHTMLRULESTYLE_TOP), displaybind, bindable] void top (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_TOP), displaybind, bindable] VARIANT top ();
    [propput, id (DISPID_IHTMLRULESTYLE_LEFT), displaybind, bindable] void left (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_LEFT), displaybind, bindable] VARIANT left ();
    [propput, id (DISPID_IHTMLRULESTYLE_ZINDEX), displaybind, bindable] void zIndex (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_ZINDEX), displaybind, bindable] VARIANT zIndex ();
    [propput, id (DISPID_IHTMLRULESTYLE_OVERFLOW), displaybind, bindable] void overflow (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_OVERFLOW), displaybind, bindable] BSTR overflow ();
    [propput, id (DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE), displaybind, bindable] void pageBreakBefore (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE), displaybind, bindable] BSTR pageBreakBefore ();
    [propput, id (DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER), displaybind, bindable] void pageBreakAfter (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER), displaybind, bindable] BSTR pageBreakAfter ();
    [propput, id (DISPID_IHTMLRULESTYLE_CSSTEXT), displaybind, bindable, nonbrowsable] void cssText (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_CSSTEXT), displaybind, bindable, nonbrowsable] BSTR cssText ();
    [propput, id (DISPID_IHTMLRULESTYLE_CURSOR), displaybind, bindable] void cursor (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_CURSOR), displaybind, bindable] BSTR cursor ();
    [propput, id (DISPID_IHTMLRULESTYLE_CLIP), displaybind, bindable] void clip (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_CLIP), displaybind, bindable] BSTR clip ();
    [propput, id (DISPID_IHTMLRULESTYLE_FILTER), displaybind, bindable] void filter (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FILTER), displaybind, bindable] BSTR filter ();
    [id (DISPID_IHTMLRULESTYLE_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLRULESTYLE_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLRULESTYLE_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLRULESTYLE2_TABLELAYOUT), displaybind, bindable] void tableLayout (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TABLELAYOUT), displaybind, bindable] BSTR tableLayout ();
    [propput, id (DISPID_IHTMLRULESTYLE2_BORDERCOLLAPSE), displaybind, bindable] void borderCollapse (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_BORDERCOLLAPSE), displaybind, bindable] BSTR borderCollapse ();
    [propput, id (DISPID_IHTMLRULESTYLE2_DIRECTION), displaybind, bindable] void direction (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_DIRECTION), displaybind, bindable] BSTR direction ();
    [propput, id (DISPID_IHTMLRULESTYLE2_BEHAVIOR), displaybind, bindable] void behavior (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_BEHAVIOR), displaybind, bindable] BSTR behavior ();
    [propput, id (DISPID_IHTMLRULESTYLE2_POSITION), displaybind, bindable] void position (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_POSITION), displaybind, bindable] BSTR position ();
    [propput, id (DISPID_IHTMLRULESTYLE2_UNICODEBIDI), displaybind, bindable] void unicodeBidi (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_UNICODEBIDI), displaybind, bindable] BSTR unicodeBidi ();
    [propput, id (DISPID_IHTMLRULESTYLE2_BOTTOM), displaybind, bindable] void bottom (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_BOTTOM), displaybind, bindable] VARIANT bottom ();
    [propput, id (DISPID_IHTMLRULESTYLE2_RIGHT), displaybind, bindable] void right (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_RIGHT), displaybind, bindable] VARIANT right ();
    [propput, id (DISPID_IHTMLRULESTYLE2_PIXELBOTTOM), displaybind, bindable, hidden] void pixelBottom (long v);
    [propget, id (DISPID_IHTMLRULESTYLE2_PIXELBOTTOM), displaybind, bindable, hidden] long pixelBottom ();
    [propput, id (DISPID_IHTMLRULESTYLE2_PIXELRIGHT), displaybind, bindable, hidden] void pixelRight (long v);
    [propget, id (DISPID_IHTMLRULESTYLE2_PIXELRIGHT), displaybind, bindable, hidden] long pixelRight ();
    [propput, id (DISPID_IHTMLRULESTYLE2_POSBOTTOM), displaybind, bindable] void posBottom (float v);
    [propget, id (DISPID_IHTMLRULESTYLE2_POSBOTTOM), displaybind, bindable] float posBottom ();
    [propput, id (DISPID_IHTMLRULESTYLE2_POSRIGHT), displaybind, bindable] void posRight (float v);
    [propget, id (DISPID_IHTMLRULESTYLE2_POSRIGHT), displaybind, bindable] float posRight ();
    [propput, id (DISPID_IHTMLRULESTYLE2_IMEMODE), displaybind, bindable] void imeMode (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_IMEMODE), displaybind, bindable] BSTR imeMode ();
    [propput, id (DISPID_IHTMLRULESTYLE2_RUBYALIGN), displaybind, bindable] void rubyAlign (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_RUBYALIGN), displaybind, bindable] BSTR rubyAlign ();
    [propput, id (DISPID_IHTMLRULESTYLE2_RUBYPOSITION), displaybind, bindable] void rubyPosition (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_RUBYPOSITION), displaybind, bindable] BSTR rubyPosition ();
    [propput, id (DISPID_IHTMLRULESTYLE2_RUBYOVERHANG), displaybind, bindable] void rubyOverhang (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_RUBYOVERHANG), displaybind, bindable] BSTR rubyOverhang ();
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDCHAR), displaybind, bindable] void layoutGridChar (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDCHAR), displaybind, bindable] VARIANT layoutGridChar ();
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDLINE), displaybind, bindable] void layoutGridLine (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDLINE), displaybind, bindable] VARIANT layoutGridLine ();
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDMODE), displaybind, bindable] void layoutGridMode (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDMODE), displaybind, bindable] BSTR layoutGridMode ();
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDTYPE), displaybind, bindable] void layoutGridType (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDTYPE), displaybind, bindable] BSTR layoutGridType ();
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable] void layoutGrid (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable] BSTR layoutGrid ();
    [propput, id (DISPID_IHTMLRULESTYLE2_TEXTAUTOSPACE), displaybind, bindable] void textAutospace (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TEXTAUTOSPACE), displaybind, bindable] BSTR textAutospace ();
    [propput, id (DISPID_IHTMLRULESTYLE2_WORDBREAK), displaybind, bindable] void wordBreak (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_WORDBREAK), displaybind, bindable] BSTR wordBreak ();
    [propput, id (DISPID_IHTMLRULESTYLE2_LINEBREAK), displaybind, bindable] void lineBreak (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LINEBREAK), displaybind, bindable] BSTR lineBreak ();
    [propput, id (DISPID_IHTMLRULESTYLE2_TEXTJUSTIFY), displaybind, bindable] void textJustify (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TEXTJUSTIFY), displaybind, bindable] BSTR textJustify ();
    [propput, id (DISPID_IHTMLRULESTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable] void textJustifyTrim (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable] BSTR textJustifyTrim ();
    [propput, id (DISPID_IHTMLRULESTYLE2_TEXTKASHIDA), displaybind, bindable] void textKashida (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TEXTKASHIDA), displaybind, bindable] VARIANT textKashida ();
    [propput, id (DISPID_IHTMLRULESTYLE2_OVERFLOWX), displaybind, bindable] void overflowX (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_OVERFLOWX), displaybind, bindable] BSTR overflowX ();
    [propput, id (DISPID_IHTMLRULESTYLE2_OVERFLOWY), displaybind, bindable] void overflowY (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_OVERFLOWY), displaybind, bindable] BSTR overflowY ();
    [propput, id (DISPID_IHTMLRULESTYLE2_ACCELERATOR), displaybind, bindable] void accelerator (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_ACCELERATOR), displaybind, bindable] BSTR accelerator ();
    [propput, id (DISPID_IHTMLRULESTYLE3_LAYOUTFLOW), displaybind, bindable] void layoutFlow (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_LAYOUTFLOW), displaybind, bindable] BSTR layoutFlow ();
    [propput, id (DISPID_IHTMLRULESTYLE3_ZOOM), displaybind, bindable] void zoom (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_ZOOM), displaybind, bindable] VARIANT zoom ();
    [propput, id (DISPID_IHTMLRULESTYLE3_WORDWRAP), displaybind, bindable] void wordWrap (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_WORDWRAP), displaybind, bindable] BSTR wordWrap ();
    [propput, id (DISPID_IHTMLRULESTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable] void textUnderlinePosition (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable] BSTR textUnderlinePosition ();
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARBASECOLOR), displaybind, bindable] void scrollbarBaseColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARBASECOLOR), displaybind, bindable] VARIANT scrollbarBaseColor ();
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARFACECOLOR), displaybind, bindable] void scrollbarFaceColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARFACECOLOR), displaybind, bindable] VARIANT scrollbarFaceColor ();
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] void scrollbar3dLightColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] VARIANT scrollbar3dLightColor ();
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable] void scrollbarShadowColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable] VARIANT scrollbarShadowColor ();
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] void scrollbarHighlightColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] VARIANT scrollbarHighlightColor ();
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] void scrollbarDarkShadowColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] VARIANT scrollbarDarkShadowColor ();
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable] void scrollbarArrowColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable] VARIANT scrollbarArrowColor ();
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable] void scrollbarTrackColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable] VARIANT scrollbarTrackColor ();
    [propput, id (DISPID_IHTMLRULESTYLE3_WRITINGMODE), displaybind, bindable] void writingMode (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_WRITINGMODE), displaybind, bindable] BSTR writingMode ();
    [propput, id (DISPID_IHTMLRULESTYLE3_TEXTALIGNLAST), displaybind, bindable] void textAlignLast (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_TEXTALIGNLAST), displaybind, bindable] BSTR textAlignLast ();
    [propput, id (DISPID_IHTMLRULESTYLE3_TEXTKASHIDASPACE), displaybind, bindable] void textKashidaSpace (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_TEXTKASHIDASPACE), displaybind, bindable] VARIANT textKashidaSpace ();
    [propput, id (DISPID_IHTMLRULESTYLE4_TEXTOVERFLOW), displaybind, bindable] void textOverflow (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE4_TEXTOVERFLOW), displaybind, bindable] BSTR textOverflow ();
    [propput, id (DISPID_IHTMLRULESTYLE4_MINHEIGHT), displaybind, bindable] void minHeight (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE4_MINHEIGHT), displaybind, bindable] VARIANT minHeight ();
    [propput, id (DISPID_IHTMLRULESTYLE5_MSINTERPOLATIONMODE), displaybind, bindable] void msInterpolationMode (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE5_MSINTERPOLATIONMODE), displaybind, bindable] BSTR msInterpolationMode ();
    [propput, id (DISPID_IHTMLRULESTYLE5_MAXHEIGHT), displaybind, bindable] void maxHeight (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE5_MAXHEIGHT), displaybind, bindable] VARIANT maxHeight ();
    [propput, id (DISPID_IHTMLRULESTYLE5_MINWIDTH), displaybind, bindable] void minWidth (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE5_MINWIDTH), displaybind, bindable] VARIANT minWidth ();
    [propput, id (DISPID_IHTMLRULESTYLE5_MAXWIDTH), displaybind, bindable] void maxWidth (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE5_MAXWIDTH), displaybind, bindable] VARIANT maxWidth ();
    [propput, id (DISPID_IHTMLRULESTYLE6_CONTENT), displaybind, bindable] void content (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_CONTENT), displaybind, bindable] BSTR content ();
    [propput, id (DISPID_IHTMLRULESTYLE6_CAPTIONSIDE), displaybind, bindable] void captionSide (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_CAPTIONSIDE), displaybind, bindable] BSTR captionSide ();
    [propput, id (DISPID_IHTMLRULESTYLE6_COUNTERINCREMENT), displaybind, bindable] void counterIncrement (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_COUNTERINCREMENT), displaybind, bindable] BSTR counterIncrement ();
    [propput, id (DISPID_IHTMLRULESTYLE6_COUNTERRESET), displaybind, bindable] void counterReset (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_COUNTERRESET), displaybind, bindable] BSTR counterReset ();
    [propput, id (DISPID_IHTMLRULESTYLE6_OUTLINE), displaybind, bindable] void outline (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_OUTLINE), displaybind, bindable] BSTR outline ();
    [propput, id (DISPID_IHTMLRULESTYLE6_OUTLINEWIDTH), displaybind, bindable] void outlineWidth (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE6_OUTLINEWIDTH), displaybind, bindable] VARIANT outlineWidth ();
    [propput, id (DISPID_IHTMLRULESTYLE6_OUTLINESTYLE), displaybind, bindable] void outlineStyle (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_OUTLINESTYLE), displaybind, bindable] BSTR outlineStyle ();
    [propput, id (DISPID_IHTMLRULESTYLE6_OUTLINECOLOR), displaybind, bindable] void outlineColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE6_OUTLINECOLOR), displaybind, bindable] VARIANT outlineColor ();
    [propput, id (DISPID_IHTMLRULESTYLE6_BOXSIZING), displaybind, bindable] void boxSizing (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_BOXSIZING), displaybind, bindable] BSTR boxSizing ();
    [propput, id (DISPID_IHTMLRULESTYLE6_BORDERSPACING), displaybind, bindable] void borderSpacing (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_BORDERSPACING), displaybind, bindable] BSTR borderSpacing ();
    [propput, id (DISPID_IHTMLRULESTYLE6_ORPHANS), displaybind, bindable] void orphans (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE6_ORPHANS), displaybind, bindable] VARIANT orphans ();
    [propput, id (DISPID_IHTMLRULESTYLE6_WIDOWS), displaybind, bindable] void widows (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE6_WIDOWS), displaybind, bindable] VARIANT widows ();
    [propput, id (DISPID_IHTMLRULESTYLE6_PAGEBREAKINSIDE), displaybind, bindable] void pageBreakInside (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_PAGEBREAKINSIDE), displaybind, bindable] BSTR pageBreakInside ();
    [propput, id (DISPID_IHTMLRULESTYLE6_EMPTYCELLS), displaybind, bindable] void emptyCells (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_EMPTYCELLS), displaybind, bindable] BSTR emptyCells ();
    [propput, id (DISPID_IHTMLRULESTYLE6_MSBLOCKPROGRESSION), displaybind, bindable] void msBlockProgression (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_MSBLOCKPROGRESSION), displaybind, bindable] BSTR msBlockProgression ();
    [propput, id (DISPID_IHTMLRULESTYLE6_QUOTES), displaybind, bindable] void quotes (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_QUOTES), displaybind, bindable] BSTR quotes ();
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LENGTH)] long length ();
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PARENTRULE)] VARIANT parentRule ();
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYVALUE)] BSTR getPropertyValue ([in] BSTR bstrPropertyName);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYPRIORITY)] BSTR getPropertyPriority ([in] BSTR bstrPropertyName);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_REMOVEPROPERTY)] BSTR removeProperty ([in] BSTR bstrPropertyName);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_SETPROPERTY)] void setProperty ([in] BSTR bstrPropertyName,[in] VARIANT *pvarPropertyValue,[defaultvalue (NULL), in] VARIANT *pvarPropertyPriority);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_ITEM)] BSTR item ([in] long index);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLCHAINING), displaybind, bindable] void msScrollChaining (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLCHAINING), displaybind, bindable] BSTR msScrollChaining ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable] void msContentZooming (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable] BSTR msContentZooming ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable] void msContentZoomSnapType (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable] BSTR msContentZoomSnapType ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable] void msScrollRails (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable] BSTR msScrollRails ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable] void msContentZoomChaining (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable] BSTR msContentZoomChaining ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable] void msScrollSnapType (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable] BSTR msScrollSnapType ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable] void msContentZoomLimit (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable] BSTR msContentZoomLimit ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable] void msContentZoomSnap (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable] BSTR msContentZoomSnap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable] void msContentZoomSnapPoints (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable] BSTR msContentZoomSnapPoints ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable] void msContentZoomLimitMin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable] VARIANT msContentZoomLimitMin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable] void msContentZoomLimitMax (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable] VARIANT msContentZoomLimitMax ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable] void msScrollSnapX (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable] BSTR msScrollSnapX ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable] void msScrollSnapY (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable] BSTR msScrollSnapY ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable] void msScrollSnapPointsX (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable] BSTR msScrollSnapPointsX ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable] void msScrollSnapPointsY (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable] BSTR msScrollSnapPointsY ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable] void msGridColumn (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable] VARIANT msGridColumn ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable] void msGridColumnAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable] BSTR msGridColumnAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable] void msGridColumns (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable] BSTR msGridColumns ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable] void msGridColumnSpan (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable] VARIANT msGridColumnSpan ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable] void msGridRow (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable] VARIANT msGridRow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable] void msGridRowAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable] BSTR msGridRowAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable] void msGridRows (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable] BSTR msGridRows ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable] void msGridRowSpan (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable] VARIANT msGridRowSpan ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable] void msWrapThrough (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable] BSTR msWrapThrough ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable] void msWrapMargin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable] VARIANT msWrapMargin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable] void msWrapFlow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable] BSTR msWrapFlow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable] void msAnimationName (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable] BSTR msAnimationName ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable] void msAnimationDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable] BSTR msAnimationDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable] void msAnimationTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable] BSTR msAnimationTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable] void msAnimationDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable] BSTR msAnimationDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable] void msAnimationDirection (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable] BSTR msAnimationDirection ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable] void msAnimationPlayState (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable] BSTR msAnimationPlayState ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable] void msAnimationIterationCount (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable] BSTR msAnimationIterationCount ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable] void msAnimation (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable] BSTR msAnimation ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable] void msAnimationFillMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable] BSTR msAnimationFillMode ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable] void colorInterpolationFilters (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable] BSTR colorInterpolationFilters ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable] void columnCount (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable] VARIANT columnCount ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable] void columnWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable] VARIANT columnWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable] void columnGap (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable] VARIANT columnGap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable] void columnFill (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable] BSTR columnFill ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable] void columnSpan (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable] BSTR columnSpan ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNS), displaybind, bindable, nonbrowsable] void columns (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNS), displaybind, bindable, nonbrowsable] BSTR columns ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable] void columnRule (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable] BSTR columnRule ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable] void columnRuleColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable] VARIANT columnRuleColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable] void columnRuleStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable] BSTR columnRuleStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable] void columnRuleWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable] VARIANT columnRuleWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable] void breakBefore (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable] BSTR breakBefore ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable] void breakAfter (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable] BSTR breakAfter ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable] void breakInside (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable] BSTR breakInside ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable] void floodColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable] VARIANT floodColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable] void floodOpacity (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable] VARIANT floodOpacity ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable] void lightingColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable] VARIANT lightingColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable] void msScrollLimitXMin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable] VARIANT msScrollLimitXMin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable] void msScrollLimitYMin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable] VARIANT msScrollLimitYMin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable] void msScrollLimitXMax (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable] VARIANT msScrollLimitXMax ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable] void msScrollLimitYMax (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable] VARIANT msScrollLimitYMax ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable] void msScrollLimit (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable] BSTR msScrollLimit ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable] void textShadow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable] BSTR textShadow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable] void msFlowFrom (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable] BSTR msFlowFrom ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable] void msFlowInto (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable] BSTR msFlowInto ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable] void msHyphens (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable] BSTR msHyphens ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable] void msHyphenateLimitZone (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable] VARIANT msHyphenateLimitZone ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable] void msHyphenateLimitChars (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable] BSTR msHyphenateLimitChars ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable] void msHyphenateLimitLines (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable] VARIANT msHyphenateLimitLines ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable] void msHighContrastAdjust (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable] BSTR msHighContrastAdjust ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable] void enableBackground (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable] BSTR enableBackground ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable] void msFontFeatureSettings (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable] BSTR msFontFeatureSettings ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable] void msUserSelect (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable] BSTR msUserSelect ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable] void msOverflowStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable] BSTR msOverflowStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable] void msTransformStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable] BSTR msTransformStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable] void msBackfaceVisibility (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable] BSTR msBackfaceVisibility ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable] void msPerspective (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable] VARIANT msPerspective ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable] void msPerspectiveOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable] BSTR msPerspectiveOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable] void msTransitionProperty (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable] BSTR msTransitionProperty ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable] void msTransitionDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable] BSTR msTransitionDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable] void msTransitionTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable] BSTR msTransitionTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable] void msTransitionDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable] BSTR msTransitionDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable] void msTransition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable] BSTR msTransition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable] void msTouchAction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable] BSTR msTouchAction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable] void msScrollTranslation (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable] BSTR msScrollTranslation ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable] void msFlex (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable] BSTR msFlex ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable] void msFlexPositive (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable] VARIANT msFlexPositive ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable] void msFlexNegative (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable] VARIANT msFlexNegative ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable] void msFlexPreferredSize (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable] VARIANT msFlexPreferredSize ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable] void msFlexFlow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable] BSTR msFlexFlow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable] void msFlexDirection (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable] BSTR msFlexDirection ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable] void msFlexWrap (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable] BSTR msFlexWrap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable] void msFlexAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable] BSTR msFlexAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable] void msFlexItemAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable] BSTR msFlexItemAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable] void msFlexPack (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable] BSTR msFlexPack ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable] void msFlexLinePack (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable] BSTR msFlexLinePack ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable] void msFlexOrder (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable] VARIANT msFlexOrder ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable] void msTouchSelect (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable] BSTR msTouchSelect ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable] void transform (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable] BSTR transform ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable] void transformOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable] BSTR transformOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable] void transformStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable] BSTR transformStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable] void backfaceVisibility (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable] BSTR backfaceVisibility ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable] void perspective (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable] VARIANT perspective ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable] void perspectiveOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable] BSTR perspectiveOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable] void transitionProperty (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable] BSTR transitionProperty ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable] void transitionDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable] BSTR transitionDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable] void transitionTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable] BSTR transitionTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable] void transitionDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable] BSTR transitionDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable] void transition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable] BSTR transition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable] void fontFeatureSettings (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable] BSTR fontFeatureSettings ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable] void animationName (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable] BSTR animationName ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable] void animationDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable] BSTR animationDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable] void animationTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable] BSTR animationTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable] void animationDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable] BSTR animationDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable] void animationDirection (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable] BSTR animationDirection ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable] void animationPlayState (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable] BSTR animationPlayState ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable] void animationIterationCount (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable] BSTR animationIterationCount ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), displaybind, bindable] void animation (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), displaybind, bindable] BSTR animation ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), displaybind, bindable] void animationFillMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), displaybind, bindable] BSTR animationFillMode ();
    [id (DISPID_IHTMLSTYLEENABLED_MSGETPROPERTYENABLED)] VARIANT_BOOL msGetPropertyEnabled ([in] BSTR name);
    [id (DISPID_IHTMLSTYLEENABLED_MSPUTPROPERTYENABLED)] void msPutPropertyEnabled ([in] BSTR name,[in] VARIANT_BOOL b);
    [id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), propget, hidden] IDispatch *constructor ();
  };

  [noncreatable, uuid (3050f3d0-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLRuleStyle {
    [default] dispinterface DispHTMLRuleStyle;
    interface IHTMLRuleStyle;
    interface IHTMLRuleStyle2;
    interface IHTMLRuleStyle3;
    interface IHTMLRuleStyle4;
    interface IHTMLRuleStyle5;
    interface IHTMLRuleStyle6;
    interface IHTMLCSSStyleDeclaration;
    interface IHTMLCSSStyleDeclaration2;
    interface IHTMLStyleEnabled;
    interface IHTMLDOMConstructor;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CRuleStyle;")
  cpp_quote("EXTERN_C const GUID CLSID_CCSSRule;")
  cpp_quote("EXTERN_C const GUID CLSID_CCSSImportRule;")
  cpp_quote("EXTERN_C const GUID CLSID_CCSSMediaRule;")
  cpp_quote("EXTERN_C const GUID CLSID_CCSSNamespaceRule;")
  cpp_quote("EXTERN_C const GUID CLSID_CCSSMediaList;")
  cpp_quote("EXTERN_C const GUID CLSID_CMSCSSKeyframeRule;")
  cpp_quote("EXTERN_C const GUID CLSID_CMSCSSKeyframesRule;")

  interface IHTMLStyleSheetRulesCollection;
  interface IHTMLStyleSheet;
  interface IHTMLRuleStyle;

  typedef enum _styleViewportSize {
    styleViewportSizeAuto = 0,
    styleViewportSizeDeviceWidth = 1,
    styleViewportSizeDeviceHeight = 2,
    styleViewportSize_Max = 0x7FFFFFFF
  } styleViewportSize;

  typedef enum _styleUserZoom {
    styleUserZoomNotSet = 0,
    styleUserZoomZoom = 1,
    styleUserZoomFixed = 2,
    styleUserZoom_Max = 0x7FFFFFFF
  } styleUserZoom;

  [odl, oleautomation, dual, uuid (305106e9-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLCSSRule : IDispatch {
    [id (DISPID_IHTMLCSSRULE_TYPE), propget] HRESULT type ([retval, out] USHORT *p);
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propput] HRESULT cssText ([in] BSTR v);
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propget] HRESULT cssText ([retval, out] BSTR *p);
    [id (DISPID_IHTMLCSSRULE_PARENTRULE), propget] HRESULT parentRule ([retval, out] IHTMLCSSRule **p);
    [id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET), propget] HRESULT parentStyleSheet ([retval, out] IHTMLStyleSheet **p);
  };

  [odl, oleautomation, dual, uuid (305106ea-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLCSSImportRule : IDispatch {
    [id (DISPID_IHTMLCSSIMPORTRULE_HREF), propget] HRESULT href ([retval, out] BSTR *p);
    [id (DISPID_IHTMLCSSIMPORTRULE_MEDIA), propput] HRESULT media ([in] VARIANT v);
    [id (DISPID_IHTMLCSSIMPORTRULE_MEDIA), propget] HRESULT media ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLCSSIMPORTRULE_STYLESHEET), propget] HRESULT styleSheet ([retval, out] IHTMLStyleSheet **p);
  };

  [odl, oleautomation, dual, uuid (305106eb-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLCSSMediaRule : IDispatch {
    [id (DISPID_IHTMLCSSMEDIARULE_MEDIA), propput] HRESULT media ([in] VARIANT v);
    [id (DISPID_IHTMLCSSMEDIARULE_MEDIA), propget] HRESULT media ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLCSSMEDIARULE_CSSRULES), propget] HRESULT cssRules ([retval, out] IHTMLStyleSheetRulesCollection **p);
    [id (DISPID_IHTMLCSSMEDIARULE_INSERTRULE)] HRESULT insertRule ([in] BSTR bstrRule,[defaultvalue (-1), in] long lIndex,[defaultvalue (0), retval, out] long *plNewIndex);
    [id (DISPID_IHTMLCSSMEDIARULE_DELETERULE)] HRESULT deleteRule ([defaultvalue (-1), in] long lIndex);
  };
  
  [odl, oleautomation, dual, uuid (30510731-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLCSSMediaList : IDispatch {
    [id (DISPID_IHTMLCSSMEDIALIST_MEDIATEXT), propput] HRESULT mediaText ([in] BSTR v);
    [id (DISPID_IHTMLCSSMEDIALIST_MEDIATEXT), propget] HRESULT mediaText ([retval, out] BSTR *p);
    [id (DISPID_IHTMLCSSMEDIALIST_LENGTH), propget] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLCSSMEDIALIST_ITEM)] HRESULT item ([in] long index,[retval, out] BSTR *pbstrMedium);
    [id (DISPID_IHTMLCSSMEDIALIST_APPENDMEDIUM)] HRESULT appendMedium ([in] BSTR bstrMedium);
    [id (DISPID_IHTMLCSSMEDIALIST_DELETEMEDIUM)] HRESULT deleteMedium ([in] BSTR bstrMedium);
  };

  [odl, oleautomation, dual, uuid (305106ee-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLCSSNamespaceRule : IDispatch {
    [id (DISPID_IHTMLCSSNAMESPACERULE_NAMESPACEURI), propget] HRESULT namespaceURI ([retval, out] BSTR *p);
    [id (DISPID_IHTMLCSSNAMESPACERULE_PREFIX), propget] HRESULT prefix ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (3051080c-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLMSCSSKeyframeRule : IDispatch {
    [id (DISPID_IHTMLMSCSSKEYFRAMERULE_KEYTEXT), propput] HRESULT keyText ([in] BSTR v);
    [id (DISPID_IHTMLMSCSSKEYFRAMERULE_KEYTEXT), propget] HRESULT keyText ([retval, out] BSTR *p);
    [id (DISPID_IHTMLMSCSSKEYFRAMERULE_STYLE), propget, nonbrowsable] HRESULT style ([retval, out] IHTMLRuleStyle **p);
  };

  [odl, oleautomation, dual, uuid (3051080d-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLMSCSSKeyframesRule : IDispatch {
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_NAME), propput] HRESULT name ([in] BSTR v);
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_NAME), propget] HRESULT name ([retval, out] BSTR *p);
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_CSSRULES), propget] HRESULT cssRules ([retval, out] IHTMLStyleSheetRulesCollection **p);
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_APPENDRULE)] HRESULT appendRule ([in] BSTR bstrRule);
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_DELETERULE)] HRESULT deleteRule ([in] BSTR bstrKey);
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_FINDRULE)] HRESULT findRule ([in] BSTR bstrKey,[retval, out] IHTMLMSCSSKeyframeRule **ppMSKeyframeRule);
  };

  [hidden, uuid (3059007d-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLCSSRule {
    properties:
    methods:
    [id (DISPID_IHTMLCSSRULE_TYPE), propget] USHORT type ();
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propput] void cssText (BSTR v);
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propget] BSTR cssText ();
    [id (DISPID_IHTMLCSSRULE_PARENTRULE), propget] IHTMLCSSRule *parentRule ();
    [id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET), propget] IHTMLStyleSheet *parentStyleSheet ();
  };

  [noncreatable, uuid (305106ef-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLCSSRule {
    [default] dispinterface DispHTMLCSSRule;
    interface IHTMLCSSRule;
  };

  [hidden, uuid (3059007e-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLCSSImportRule {
    properties:
    methods:
    [id (DISPID_IHTMLCSSRULE_TYPE), propget] USHORT type ();
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propput] void cssText (BSTR v);
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propget] BSTR cssText ();
    [id (DISPID_IHTMLCSSRULE_PARENTRULE), propget] IHTMLCSSRule *parentRule ();
    [id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET), propget] IHTMLStyleSheet *parentStyleSheet ();
    [id (DISPID_IHTMLCSSIMPORTRULE_HREF), propget] BSTR href ();
    [id (DISPID_IHTMLCSSIMPORTRULE_MEDIA), propput] void media (VARIANT v);
    [id (DISPID_IHTMLCSSIMPORTRULE_MEDIA), propget] VARIANT media ();
    [id (DISPID_IHTMLCSSIMPORTRULE_STYLESHEET), propget] IHTMLStyleSheet *styleSheet ();
  };

  [noncreatable, uuid (305106f0-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLCSSImportRule {
    [default] dispinterface DispHTMLCSSImportRule;
    interface IHTMLCSSRule;
    interface IHTMLCSSImportRule;
  };

  [hidden, uuid (3059007f-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLCSSMediaRule {
    properties:
    methods:
    [id (DISPID_IHTMLCSSRULE_TYPE), propget] USHORT type ();
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propput] void cssText (BSTR v);
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propget] BSTR cssText ();
    [id (DISPID_IHTMLCSSRULE_PARENTRULE), propget] IHTMLCSSRule *parentRule ();
    [id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET), propget] IHTMLStyleSheet *parentStyleSheet ();
    [id (DISPID_IHTMLCSSMEDIARULE_MEDIA), propput] void media (VARIANT v);
    [id (DISPID_IHTMLCSSMEDIARULE_MEDIA), propget] VARIANT media ();
    [id (DISPID_IHTMLCSSMEDIARULE_CSSRULES), propget] IHTMLStyleSheetRulesCollection *cssRules ();
    [id (DISPID_IHTMLCSSMEDIARULE_INSERTRULE)] long insertRule ([in] BSTR bstrRule,[defaultvalue (-1), in] long lIndex);
    [id (DISPID_IHTMLCSSMEDIARULE_DELETERULE)] void deleteRule ([defaultvalue (-1), in] long lIndex);
  };

  [noncreatable, uuid (305106f1-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLCSSMediaRule {
    [default] dispinterface DispHTMLCSSMediaRule;
    interface IHTMLCSSRule;
    interface IHTMLCSSMediaRule;
  };

  [hidden, uuid (30590097-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLCSSMediaList {
    properties:
    methods:
    [id (DISPID_IHTMLCSSMEDIALIST_MEDIATEXT), propput] void mediaText (BSTR v);
    [id (DISPID_IHTMLCSSMEDIALIST_MEDIATEXT), propget] BSTR mediaText ();
    [id (DISPID_IHTMLCSSMEDIALIST_LENGTH), propget] long length ();
    [id (DISPID_IHTMLCSSMEDIALIST_ITEM)] BSTR item ([in] long index);
    [id (DISPID_IHTMLCSSMEDIALIST_APPENDMEDIUM)] void appendMedium ([in] BSTR bstrMedium);
    [id (DISPID_IHTMLCSSMEDIALIST_DELETEMEDIUM)] void deleteMedium ([in] BSTR bstrMedium);
  };

  [noncreatable, uuid (30510732-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLCSSMediaList {
    [default] dispinterface DispHTMLCSSMediaList;
    interface IHTMLCSSMediaList;
  };

  [hidden, uuid (30590080-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLCSSNamespaceRule {
    properties:
    methods:
    [id (DISPID_IHTMLCSSRULE_TYPE), propget] USHORT type ();
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propput] void cssText (BSTR v);
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propget] BSTR cssText ();
    [id (DISPID_IHTMLCSSRULE_PARENTRULE), propget] IHTMLCSSRule *parentRule ();
    [id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET), propget] IHTMLStyleSheet *parentStyleSheet ();
    [id (DISPID_IHTMLCSSNAMESPACERULE_NAMESPACEURI), propget] BSTR namespaceURI ();
    [id (DISPID_IHTMLCSSNAMESPACERULE_PREFIX), propget] BSTR prefix ();
  };

  [noncreatable, uuid (305106f2-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLCSSNamespaceRule {
    [default] dispinterface DispHTMLCSSNamespaceRule;
    interface IHTMLCSSRule;
    interface IHTMLCSSNamespaceRule;
  };

  [hidden, uuid (305900de-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLMSCSSKeyframeRule {
    properties:
    methods:
    [id (DISPID_IHTMLCSSRULE_TYPE), propget] USHORT type ();
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propput] void cssText (BSTR v);
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propget] BSTR cssText ();
    [id (DISPID_IHTMLCSSRULE_PARENTRULE), propget] IHTMLCSSRule *parentRule ();
    [id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET), propget] IHTMLStyleSheet *parentStyleSheet ();
    [id (DISPID_IHTMLMSCSSKEYFRAMERULE_KEYTEXT), propput] void keyText (BSTR v);
    [id (DISPID_IHTMLMSCSSKEYFRAMERULE_KEYTEXT), propget] BSTR keyText ();
    [id (DISPID_IHTMLMSCSSKEYFRAMERULE_STYLE), propget, nonbrowsable] IHTMLRuleStyle *style ();
  };

  [noncreatable, uuid (3051080e-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLMSCSSKeyframeRule {
    [default] dispinterface DispHTMLMSCSSKeyframeRule;
    interface IHTMLCSSRule;
    interface IHTMLMSCSSKeyframeRule;
  };

  [hidden, uuid (305900df-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLMSCSSKeyframesRule {
    properties:
    methods:
    [id (DISPID_IHTMLCSSRULE_TYPE), propget] USHORT type ();
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propput] void cssText (BSTR v);
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propget] BSTR cssText ();
    [id (DISPID_IHTMLCSSRULE_PARENTRULE), propget] IHTMLCSSRule *parentRule ();
    [id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET), propget] IHTMLStyleSheet *parentStyleSheet ();
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_NAME), propput] void name (BSTR v);
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_NAME), propget] BSTR name ();
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_CSSRULES), propget] IHTMLStyleSheetRulesCollection *cssRules ();
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_APPENDRULE)] void appendRule ([in] BSTR bstrRule);
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_DELETERULE)] void deleteRule ([in] BSTR bstrKey);
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_FINDRULE)] IHTMLMSCSSKeyframeRule *findRule ([in] BSTR bstrKey);
  };

  [noncreatable, uuid (3051080f-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLMSCSSKeyframesRule {
    [default] dispinterface DispHTMLMSCSSKeyframesRule;
    interface IHTMLCSSRule;
    interface IHTMLMSCSSKeyframesRule;
  };

  typedef enum _styleTextLineThroughStyle {
    styleTextLineThroughStyleUndefined = 0,
    styleTextLineThroughStyleSingle = 1,
    styleTextLineThroughStyleDouble = 2,
    styleTextLineThroughStyle_Max = 0x7FFFFFFF
  } styleTextLineThroughStyle;

  typedef enum _styleTextUnderlineStyle {
    styleTextUnderlineStyleUndefined = 0,
    styleTextUnderlineStyleSingle = 1,
    styleTextUnderlineStyleDouble = 2,
    styleTextUnderlineStyleWords = 3,
    styleTextUnderlineStyleDotted = 4,
    styleTextUnderlineStyleThick = 5,
    styleTextUnderlineStyleDash = 6,
    styleTextUnderlineStyleDotDash = 7,
    styleTextUnderlineStyleDotDotDash = 8,
    styleTextUnderlineStyleWave = 9,
    styleTextUnderlineStyleSingleAccounting = 10,
    styleTextUnderlineStyleDoubleAccounting = 11,
    styleTextUnderlineStyleThickDash = 12,
    styleTextUnderlineStyle_Max = 0x7FFFFFFF
  } styleTextUnderlineStyle;

  typedef enum _styleTextEffect {
    styleTextEffectNone = 0,
    styleTextEffectEmboss = 1,
    styleTextEffectEngrave = 2,
    styleTextEffectOutline = 3,
    styleTextEffect_Max = 0x7FFFFFFF
  } styleTextEffect;

  typedef enum _styleDefaultTextSelection {
    styleDefaultTextSelectionFalse = 0,
    styleDefaultTextSelectionTrue = 1,
    styleDefaultTextSelection_Max = 0x7FFFFFFF
  } styleDefaultTextSelection;

  typedef enum _styleTextDecoration {
    styleTextDecorationNone = 0,
    styleTextDecorationUnderline = 1,
    styleTextDecorationOverline = 2,
    styleTextDecorationLineThrough = 3,
    styleTextDecorationBlink = 4,
    styleTextDecoration_Max = 0x7FFFFFFF
  } styleTextDecoration;
  [odl, oleautomation, dual, uuid (3050f6ae-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLRenderStyle : IDispatch {
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTLINETHROUGHSTYLE), displaybind, bindable] HRESULT textLineThroughStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTLINETHROUGHSTYLE), displaybind, bindable] HRESULT textLineThroughStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTUNDERLINESTYLE), displaybind, bindable] HRESULT textUnderlineStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTUNDERLINESTYLE), displaybind, bindable] HRESULT textUnderlineStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTEFFECT), displaybind, bindable] HRESULT textEffect ([in] BSTR v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTEFFECT), displaybind, bindable] HRESULT textEffect ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTCOLOR), displaybind, bindable] HRESULT textColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTCOLOR), displaybind, bindable] HRESULT textColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTBACKGROUNDCOLOR), displaybind, bindable] HRESULT textBackgroundColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTBACKGROUNDCOLOR), displaybind, bindable] HRESULT textBackgroundColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTDECORATIONCOLOR), displaybind, bindable] HRESULT textDecorationColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTDECORATIONCOLOR), displaybind, bindable] HRESULT textDecorationColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRENDERSTYLE_RENDERINGPRIORITY), displaybind, bindable] HRESULT renderingPriority ([in] long v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_RENDERINGPRIORITY), displaybind, bindable] HRESULT renderingPriority ([retval, out] long *p);
    [propput, id (DISPID_IHTMLRENDERSTYLE_DEFAULTTEXTSELECTION), displaybind, bindable] HRESULT defaultTextSelection ([in] BSTR v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_DEFAULTTEXTSELECTION), displaybind, bindable] HRESULT defaultTextSelection ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTDECORATION), displaybind, bindable] HRESULT textDecoration ([in] BSTR v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTDECORATION), displaybind, bindable] HRESULT textDecoration ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f58b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLRenderStyle {
    properties:
    methods:
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTLINETHROUGHSTYLE), displaybind, bindable] void textLineThroughStyle (BSTR v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTLINETHROUGHSTYLE), displaybind, bindable] BSTR textLineThroughStyle ();
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTUNDERLINESTYLE), displaybind, bindable] void textUnderlineStyle (BSTR v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTUNDERLINESTYLE), displaybind, bindable] BSTR textUnderlineStyle ();
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTEFFECT), displaybind, bindable] void textEffect (BSTR v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTEFFECT), displaybind, bindable] BSTR textEffect ();
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTCOLOR), displaybind, bindable] void textColor (VARIANT v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTCOLOR), displaybind, bindable] VARIANT textColor ();
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTBACKGROUNDCOLOR), displaybind, bindable] void textBackgroundColor (VARIANT v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTBACKGROUNDCOLOR), displaybind, bindable] VARIANT textBackgroundColor ();
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTDECORATIONCOLOR), displaybind, bindable] void textDecorationColor (VARIANT v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTDECORATIONCOLOR), displaybind, bindable] VARIANT textDecorationColor ();
    [propput, id (DISPID_IHTMLRENDERSTYLE_RENDERINGPRIORITY), displaybind, bindable] void renderingPriority (long v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_RENDERINGPRIORITY), displaybind, bindable] long renderingPriority ();
    [propput, id (DISPID_IHTMLRENDERSTYLE_DEFAULTTEXTSELECTION), displaybind, bindable] void defaultTextSelection (BSTR v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_DEFAULTTEXTSELECTION), displaybind, bindable] BSTR defaultTextSelection ();
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTDECORATION), displaybind, bindable] void textDecoration (BSTR v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTDECORATION), displaybind, bindable] BSTR textDecoration ();
  };
  [noncreatable, uuid (3050f6aa-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLRenderStyle {
    [default] dispinterface DispHTMLRenderStyle;
    interface IHTMLRenderStyle;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CRenderStyle;")
  typedef enum _textDecoration {
    textDecorationNone = 0,
    textDecorationUnderline = 1,
    textDecorationOverline = 2,
    textDecorationLineThrough = 3,
    textDecorationBlink = 4,
    textDecoration_Max = 0x7FFFFFFF
  } textDecoration;
  [odl, oleautomation, dual, uuid (3050f3db-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLCurrentStyle : IDispatch {
    [propget, id (DISPID_IHTMLCURRENTSTYLE_POSITION), displaybind, bindable] HRESULT position ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_STYLEFLOAT), displaybind, bindable] HRESULT styleFloat ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_COLOR), displaybind, bindable] HRESULT color ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BACKGROUNDCOLOR), displaybind, bindable] HRESULT backgroundColor ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_FONTFAMILY), displaybind, bindable] HRESULT fontFamily ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_FONTSTYLE), displaybind, bindable] HRESULT fontStyle ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_FONTVARIANT), displaybind, bindable, hidden] HRESULT fontVariant ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_FONTWEIGHT), displaybind, bindable] HRESULT fontWeight ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_FONTSIZE), displaybind, bindable] HRESULT fontSize ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BACKGROUNDIMAGE), displaybind, bindable] HRESULT backgroundImage ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable] HRESULT backgroundPositionX ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable] HRESULT backgroundPositionY ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BACKGROUNDREPEAT), displaybind, bindable] HRESULT backgroundRepeat ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERLEFTCOLOR), displaybind, bindable] HRESULT borderLeftColor ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERTOPCOLOR), displaybind, bindable] HRESULT borderTopColor ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTCOLOR), displaybind, bindable] HRESULT borderRightColor ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable] HRESULT borderBottomColor ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERTOPSTYLE), displaybind, bindable] HRESULT borderTopStyle ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTSTYLE), displaybind, bindable] HRESULT borderRightStyle ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable] HRESULT borderBottomStyle ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERLEFTSTYLE), displaybind, bindable] HRESULT borderLeftStyle ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERTOPWIDTH), displaybind, bindable] HRESULT borderTopWidth ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTWIDTH), displaybind, bindable] HRESULT borderRightWidth ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable] HRESULT borderBottomWidth ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERLEFTWIDTH), displaybind, bindable] HRESULT borderLeftWidth ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LEFT), displaybind, bindable] HRESULT left ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TOP), displaybind, bindable] HRESULT top ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_WIDTH), displaybind, bindable] HRESULT width ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_HEIGHT), displaybind, bindable] HRESULT height ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_PADDINGLEFT), displaybind, bindable] HRESULT paddingLeft ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_PADDINGTOP), displaybind, bindable] HRESULT paddingTop ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_PADDINGRIGHT), displaybind, bindable] HRESULT paddingRight ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_PADDINGBOTTOM), displaybind, bindable] HRESULT paddingBottom ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TEXTALIGN), displaybind, bindable] HRESULT textAlign ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TEXTDECORATION), displaybind, bindable] HRESULT textDecoration ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_DISPLAY), displaybind, bindable] HRESULT display ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_VISIBILITY), displaybind, bindable] HRESULT visibility ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_ZINDEX), displaybind, bindable] HRESULT zIndex ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LETTERSPACING), displaybind, bindable] HRESULT letterSpacing ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LINEHEIGHT), displaybind, bindable] HRESULT lineHeight ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TEXTINDENT), displaybind, bindable] HRESULT textIndent ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_VERTICALALIGN), displaybind, bindable] HRESULT verticalAlign ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable] HRESULT backgroundAttachment ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_MARGINTOP), displaybind, bindable] HRESULT marginTop ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_MARGINRIGHT), displaybind, bindable] HRESULT marginRight ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_MARGINBOTTOM), displaybind, bindable] HRESULT marginBottom ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_MARGINLEFT), displaybind, bindable] HRESULT marginLeft ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_CLEAR), displaybind, bindable] HRESULT clear ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LISTSTYLETYPE), displaybind, bindable] HRESULT listStyleType ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LISTSTYLEPOSITION), displaybind, bindable] HRESULT listStylePosition ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LISTSTYLEIMAGE), displaybind, bindable] HRESULT listStyleImage ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_CLIPTOP), displaybind, bindable] HRESULT clipTop ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_CLIPRIGHT), displaybind, bindable] HRESULT clipRight ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_CLIPBOTTOM), displaybind, bindable] HRESULT clipBottom ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_CLIPLEFT), displaybind, bindable] HRESULT clipLeft ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_OVERFLOW), displaybind, bindable] HRESULT overflow ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_PAGEBREAKBEFORE), displaybind, bindable] HRESULT pageBreakBefore ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_PAGEBREAKAFTER), displaybind, bindable] HRESULT pageBreakAfter ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_CURSOR), displaybind, bindable] HRESULT cursor ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TABLELAYOUT), displaybind, bindable] HRESULT tableLayout ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERCOLLAPSE), displaybind, bindable] HRESULT borderCollapse ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_DIRECTION), displaybind, bindable] HRESULT direction ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BEHAVIOR), displaybind, bindable] HRESULT behavior ([retval, out] BSTR *p);
    [id (DISPID_IHTMLCURRENTSTYLE_GETATTRIBUTE)] HRESULT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags,[defaultvalue (0), retval, out] VARIANT *AttributeValue);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_UNICODEBIDI), displaybind, bindable] HRESULT unicodeBidi ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_RIGHT), displaybind, bindable] HRESULT right ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BOTTOM), displaybind, bindable] HRESULT bottom ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_IMEMODE), displaybind, bindable] HRESULT imeMode ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_RUBYALIGN), displaybind, bindable] HRESULT rubyAlign ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_RUBYPOSITION), displaybind, bindable] HRESULT rubyPosition ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_RUBYOVERHANG), displaybind, bindable] HRESULT rubyOverhang ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TEXTAUTOSPACE), displaybind, bindable] HRESULT textAutospace ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LINEBREAK), displaybind, bindable] HRESULT lineBreak ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_WORDBREAK), displaybind, bindable] HRESULT wordBreak ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFY), displaybind, bindable] HRESULT textJustify ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFYTRIM), displaybind, bindable] HRESULT textJustifyTrim ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TEXTKASHIDA), displaybind, bindable] HRESULT textKashida ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BLOCKDIRECTION), displaybind, bindable] HRESULT blockDirection ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDCHAR), displaybind, bindable] HRESULT layoutGridChar ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDLINE), displaybind, bindable] HRESULT layoutGridLine ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDMODE), displaybind, bindable] HRESULT layoutGridMode ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDTYPE), displaybind, bindable] HRESULT layoutGridType ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERSTYLE), displaybind, bindable] HRESULT borderStyle ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERCOLOR), displaybind, bindable] HRESULT borderColor ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERWIDTH), displaybind, bindable] HRESULT borderWidth ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_PADDING), displaybind, bindable] HRESULT padding ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_MARGIN), displaybind, bindable] HRESULT margin ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_ACCELERATOR), displaybind, bindable] HRESULT accelerator ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_OVERFLOWX), displaybind, bindable] HRESULT overflowX ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_OVERFLOWY), displaybind, bindable] HRESULT overflowY ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TEXTTRANSFORM), displaybind, bindable] HRESULT textTransform ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f658-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLCurrentStyle2 : IDispatch {
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_LAYOUTFLOW), displaybind, bindable] HRESULT layoutFlow ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_WORDWRAP), displaybind, bindable] HRESULT wordWrap ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_TEXTUNDERLINEPOSITION), displaybind, bindable] HRESULT textUnderlinePosition ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_HASLAYOUT), displaybind, bindable] HRESULT hasLayout ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_SCROLLBARBASECOLOR), displaybind, bindable] HRESULT scrollbarBaseColor ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_SCROLLBARFACECOLOR), displaybind, bindable] HRESULT scrollbarFaceColor ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] HRESULT scrollbar3dLightColor ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_SCROLLBARSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarShadowColor ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] HRESULT scrollbarHighlightColor ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarDarkShadowColor ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_SCROLLBARARROWCOLOR), displaybind, bindable] HRESULT scrollbarArrowColor ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_SCROLLBARTRACKCOLOR), displaybind, bindable] HRESULT scrollbarTrackColor ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_WRITINGMODE), displaybind, bindable] HRESULT writingMode ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_ZOOM), displaybind, bindable] HRESULT zoom ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_FILTER), displaybind, bindable] HRESULT filter ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_TEXTALIGNLAST), displaybind, bindable] HRESULT textAlignLast ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_TEXTKASHIDASPACE), displaybind, bindable] HRESULT textKashidaSpace ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_ISBLOCK), displaybind, bindable, hidden, restricted, nonbrowsable] HRESULT isBlock ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (3050f818-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLCurrentStyle3 : IDispatch {
    [propget, id (DISPID_IHTMLCURRENTSTYLE3_TEXTOVERFLOW), displaybind, bindable] HRESULT textOverflow ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE3_MINHEIGHT), displaybind, bindable] HRESULT minHeight ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE3_WORDSPACING), displaybind, bindable] HRESULT wordSpacing ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE3_WHITESPACE), displaybind, bindable] HRESULT whiteSpace ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f33b-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLCurrentStyle4 : IDispatch {
    [propget, id (DISPID_IHTMLCURRENTSTYLE4_MSINTERPOLATIONMODE), displaybind, bindable] HRESULT msInterpolationMode ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE4_MAXHEIGHT), displaybind, bindable] HRESULT maxHeight ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE4_MINWIDTH), displaybind, bindable] HRESULT minWidth ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE4_MAXWIDTH), displaybind, bindable] HRESULT maxWidth ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (30510481-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLCurrentStyle5 : IDispatch {
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_CAPTIONSIDE), displaybind, bindable] HRESULT captionSide ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_OUTLINE), displaybind, bindable] HRESULT outline ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_OUTLINEWIDTH), displaybind, bindable] HRESULT outlineWidth ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_OUTLINESTYLE), displaybind, bindable] HRESULT outlineStyle ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_OUTLINECOLOR), displaybind, bindable] HRESULT outlineColor ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_BOXSIZING), displaybind, bindable] HRESULT boxSizing ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_BORDERSPACING), displaybind, bindable] HRESULT borderSpacing ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_ORPHANS), displaybind, bindable] HRESULT orphans ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_WIDOWS), displaybind, bindable] HRESULT widows ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_PAGEBREAKINSIDE), displaybind, bindable] HRESULT pageBreakInside ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_EMPTYCELLS), displaybind, bindable] HRESULT emptyCells ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_MSBLOCKPROGRESSION), displaybind, bindable] HRESULT msBlockProgression ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_QUOTES), displaybind, bindable] HRESULT quotes ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f557-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLCurrentStyle {
    properties:
    methods:
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LENGTH)] long length ();
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PARENTRULE)] VARIANT parentRule ();
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYVALUE)] BSTR getPropertyValue ([in] BSTR bstrPropertyName);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYPRIORITY)] BSTR getPropertyPriority ([in] BSTR bstrPropertyName);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_REMOVEPROPERTY)] BSTR removeProperty ([in] BSTR bstrPropertyName);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_SETPROPERTY)] void setProperty ([in] BSTR bstrPropertyName,[in] VARIANT *pvarPropertyValue,[defaultvalue (NULL), in] VARIANT *pvarPropertyPriority);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_ITEM)] BSTR item ([in] long index);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLCHAINING), displaybind, bindable] void msScrollChaining (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLCHAINING), displaybind, bindable] BSTR msScrollChaining ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable] void msContentZooming (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable] BSTR msContentZooming ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable] void msContentZoomSnapType (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable] BSTR msContentZoomSnapType ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable] void msScrollRails (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable] BSTR msScrollRails ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable] void msContentZoomChaining (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable] BSTR msContentZoomChaining ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable] void msScrollSnapType (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable] BSTR msScrollSnapType ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable] void msContentZoomLimit (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable] BSTR msContentZoomLimit ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable] void msContentZoomSnap (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable] BSTR msContentZoomSnap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable] void msContentZoomSnapPoints (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable] BSTR msContentZoomSnapPoints ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable] void msContentZoomLimitMin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable] VARIANT msContentZoomLimitMin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable] void msContentZoomLimitMax (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable] VARIANT msContentZoomLimitMax ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable] void msScrollSnapX (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable] BSTR msScrollSnapX ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable] void msScrollSnapY (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable] BSTR msScrollSnapY ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable] void msScrollSnapPointsX (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable] BSTR msScrollSnapPointsX ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable] void msScrollSnapPointsY (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable] BSTR msScrollSnapPointsY ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable] void msGridColumn (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable] VARIANT msGridColumn ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable] void msGridColumnAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable] BSTR msGridColumnAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable] void msGridColumns (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable] BSTR msGridColumns ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable] void msGridColumnSpan (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable] VARIANT msGridColumnSpan ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable] void msGridRow (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable] VARIANT msGridRow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable] void msGridRowAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable] BSTR msGridRowAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable] void msGridRows (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable] BSTR msGridRows ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable] void msGridRowSpan (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable] VARIANT msGridRowSpan ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable] void msWrapThrough (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable] BSTR msWrapThrough ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable] void msWrapMargin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable] VARIANT msWrapMargin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable] void msWrapFlow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable] BSTR msWrapFlow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable] void msAnimationName (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable] BSTR msAnimationName ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable] void msAnimationDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable] BSTR msAnimationDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable] void msAnimationTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable] BSTR msAnimationTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable] void msAnimationDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable] BSTR msAnimationDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable] void msAnimationDirection (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable] BSTR msAnimationDirection ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable] void msAnimationPlayState (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable] BSTR msAnimationPlayState ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable] void msAnimationIterationCount (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable] BSTR msAnimationIterationCount ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable] void msAnimation (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable] BSTR msAnimation ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable] void msAnimationFillMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable] BSTR msAnimationFillMode ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable] void colorInterpolationFilters (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable] BSTR colorInterpolationFilters ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable] void columnCount (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable] VARIANT columnCount ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable] void columnWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable] VARIANT columnWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable] void columnGap (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable] VARIANT columnGap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable] void columnFill (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable] BSTR columnFill ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable] void columnSpan (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable] BSTR columnSpan ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNS), displaybind, bindable, nonbrowsable] void columns (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNS), displaybind, bindable, nonbrowsable] BSTR columns ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable] void columnRule (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable] BSTR columnRule ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable] void columnRuleColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable] VARIANT columnRuleColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable] void columnRuleStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable] BSTR columnRuleStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable] void columnRuleWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable] VARIANT columnRuleWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable] void breakBefore (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable] BSTR breakBefore ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable] void breakAfter (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable] BSTR breakAfter ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable] void breakInside (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable] BSTR breakInside ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable] void floodColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable] VARIANT floodColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable] void floodOpacity (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable] VARIANT floodOpacity ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable] void lightingColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable] VARIANT lightingColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable] void msScrollLimitXMin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable] VARIANT msScrollLimitXMin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable] void msScrollLimitYMin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable] VARIANT msScrollLimitYMin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable] void msScrollLimitXMax (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable] VARIANT msScrollLimitXMax ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable] void msScrollLimitYMax (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable] VARIANT msScrollLimitYMax ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable] void msScrollLimit (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable] BSTR msScrollLimit ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable] void textShadow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable] BSTR textShadow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable] void msFlowFrom (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable] BSTR msFlowFrom ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable] void msFlowInto (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable] BSTR msFlowInto ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable] void msHyphens (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable] BSTR msHyphens ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable] void msHyphenateLimitZone (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable] VARIANT msHyphenateLimitZone ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable] void msHyphenateLimitChars (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable] BSTR msHyphenateLimitChars ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable] void msHyphenateLimitLines (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable] VARIANT msHyphenateLimitLines ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable] void msHighContrastAdjust (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable] BSTR msHighContrastAdjust ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable] void enableBackground (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable] BSTR enableBackground ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable] void msFontFeatureSettings (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable] BSTR msFontFeatureSettings ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable] void msUserSelect (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable] BSTR msUserSelect ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable] void msOverflowStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable] BSTR msOverflowStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable] void msTransformStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable] BSTR msTransformStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable] void msBackfaceVisibility (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable] BSTR msBackfaceVisibility ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable] void msPerspective (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable] VARIANT msPerspective ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable] void msPerspectiveOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable] BSTR msPerspectiveOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable] void msTransitionProperty (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable] BSTR msTransitionProperty ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable] void msTransitionDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable] BSTR msTransitionDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable] void msTransitionTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable] BSTR msTransitionTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable] void msTransitionDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable] BSTR msTransitionDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable] void msTransition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable] BSTR msTransition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable] void msTouchAction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable] BSTR msTouchAction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable] void msScrollTranslation (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable] BSTR msScrollTranslation ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable] void msFlex (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable] BSTR msFlex ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable] void msFlexPositive (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable] VARIANT msFlexPositive ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable] void msFlexNegative (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable] VARIANT msFlexNegative ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable] void msFlexPreferredSize (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable] VARIANT msFlexPreferredSize ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable] void msFlexFlow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable] BSTR msFlexFlow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable] void msFlexDirection (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable] BSTR msFlexDirection ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable] void msFlexWrap (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable] BSTR msFlexWrap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable] void msFlexAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable] BSTR msFlexAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable] void msFlexItemAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable] BSTR msFlexItemAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable] void msFlexPack (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable] BSTR msFlexPack ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable] void msFlexLinePack (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable] BSTR msFlexLinePack ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable] void msFlexOrder (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable] VARIANT msFlexOrder ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable] void msTouchSelect (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable] BSTR msTouchSelect ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable] void transform (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable] BSTR transform ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable] void transformOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable] BSTR transformOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable] void transformStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable] BSTR transformStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable] void backfaceVisibility (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable] BSTR backfaceVisibility ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable] void perspective (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable] VARIANT perspective ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable] void perspectiveOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable] BSTR perspectiveOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable] void transitionProperty (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable] BSTR transitionProperty ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable] void transitionDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable] BSTR transitionDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable] void transitionTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable] BSTR transitionTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable] void transitionDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable] BSTR transitionDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable] void transition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable] BSTR transition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable] void fontFeatureSettings (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable] BSTR fontFeatureSettings ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable] void animationName (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable] BSTR animationName ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable] void animationDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable] BSTR animationDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable] void animationTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable] BSTR animationTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable] void animationDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable] BSTR animationDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable] void animationDirection (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable] BSTR animationDirection ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable] void animationPlayState (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable] BSTR animationPlayState ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable] void animationIterationCount (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable] BSTR animationIterationCount ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), displaybind, bindable] void animation (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), displaybind, bindable] BSTR animation ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), displaybind, bindable] void animationFillMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), displaybind, bindable] BSTR animationFillMode ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_POSITION), displaybind, bindable] BSTR position ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_STYLEFLOAT), displaybind, bindable] BSTR styleFloat ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_COLOR), displaybind, bindable] VARIANT color ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BACKGROUNDCOLOR), displaybind, bindable] VARIANT backgroundColor ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_FONTFAMILY), displaybind, bindable] BSTR fontFamily ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_FONTSTYLE), displaybind, bindable] BSTR fontStyle ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_FONTVARIANT), displaybind, bindable, hidden] BSTR fontVariant ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_FONTWEIGHT), displaybind, bindable] VARIANT fontWeight ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_FONTSIZE), displaybind, bindable] VARIANT fontSize ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BACKGROUNDIMAGE), displaybind, bindable] BSTR backgroundImage ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable] VARIANT backgroundPositionX ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable] VARIANT backgroundPositionY ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BACKGROUNDREPEAT), displaybind, bindable] BSTR backgroundRepeat ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERLEFTCOLOR), displaybind, bindable] VARIANT borderLeftColor ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERTOPCOLOR), displaybind, bindable] VARIANT borderTopColor ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTCOLOR), displaybind, bindable] VARIANT borderRightColor ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable] VARIANT borderBottomColor ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERTOPSTYLE), displaybind, bindable] BSTR borderTopStyle ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTSTYLE), displaybind, bindable] BSTR borderRightStyle ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable] BSTR borderBottomStyle ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERLEFTSTYLE), displaybind, bindable] BSTR borderLeftStyle ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERTOPWIDTH), displaybind, bindable] VARIANT borderTopWidth ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTWIDTH), displaybind, bindable] VARIANT borderRightWidth ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable] VARIANT borderBottomWidth ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERLEFTWIDTH), displaybind, bindable] VARIANT borderLeftWidth ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LEFT), displaybind, bindable] VARIANT left ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TOP), displaybind, bindable] VARIANT top ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_WIDTH), displaybind, bindable] VARIANT width ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_HEIGHT), displaybind, bindable] VARIANT height ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_PADDINGLEFT), displaybind, bindable] VARIANT paddingLeft ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_PADDINGTOP), displaybind, bindable] VARIANT paddingTop ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_PADDINGRIGHT), displaybind, bindable] VARIANT paddingRight ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_PADDINGBOTTOM), displaybind, bindable] VARIANT paddingBottom ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TEXTALIGN), displaybind, bindable] BSTR textAlign ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TEXTDECORATION), displaybind, bindable] BSTR textDecoration ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_DISPLAY), displaybind, bindable] BSTR display ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_VISIBILITY), displaybind, bindable] BSTR visibility ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_ZINDEX), displaybind, bindable] VARIANT zIndex ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LETTERSPACING), displaybind, bindable] VARIANT letterSpacing ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LINEHEIGHT), displaybind, bindable] VARIANT lineHeight ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TEXTINDENT), displaybind, bindable] VARIANT textIndent ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_VERTICALALIGN), displaybind, bindable] VARIANT verticalAlign ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable] BSTR backgroundAttachment ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_MARGINTOP), displaybind, bindable] VARIANT marginTop ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_MARGINRIGHT), displaybind, bindable] VARIANT marginRight ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_MARGINBOTTOM), displaybind, bindable] VARIANT marginBottom ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_MARGINLEFT), displaybind, bindable] VARIANT marginLeft ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_CLEAR), displaybind, bindable] BSTR clear ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LISTSTYLETYPE), displaybind, bindable] BSTR listStyleType ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LISTSTYLEPOSITION), displaybind, bindable] BSTR listStylePosition ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LISTSTYLEIMAGE), displaybind, bindable] BSTR listStyleImage ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_CLIPTOP), displaybind, bindable] VARIANT clipTop ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_CLIPRIGHT), displaybind, bindable] VARIANT clipRight ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_CLIPBOTTOM), displaybind, bindable] VARIANT clipBottom ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_CLIPLEFT), displaybind, bindable] VARIANT clipLeft ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_OVERFLOW), displaybind, bindable] BSTR overflow ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_PAGEBREAKBEFORE), displaybind, bindable] BSTR pageBreakBefore ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_PAGEBREAKAFTER), displaybind, bindable] BSTR pageBreakAfter ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_CURSOR), displaybind, bindable] BSTR cursor ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TABLELAYOUT), displaybind, bindable] BSTR tableLayout ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERCOLLAPSE), displaybind, bindable] BSTR borderCollapse ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_DIRECTION), displaybind, bindable] BSTR direction ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BEHAVIOR), displaybind, bindable] BSTR behavior ();
    [id (DISPID_IHTMLCURRENTSTYLE_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [propget, id (DISPID_IHTMLCURRENTSTYLE_UNICODEBIDI), displaybind, bindable] BSTR unicodeBidi ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_RIGHT), displaybind, bindable] VARIANT right ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BOTTOM), displaybind, bindable] VARIANT bottom ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_IMEMODE), displaybind, bindable] BSTR imeMode ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_RUBYALIGN), displaybind, bindable] BSTR rubyAlign ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_RUBYPOSITION), displaybind, bindable] BSTR rubyPosition ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_RUBYOVERHANG), displaybind, bindable] BSTR rubyOverhang ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TEXTAUTOSPACE), displaybind, bindable] BSTR textAutospace ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LINEBREAK), displaybind, bindable] BSTR lineBreak ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_WORDBREAK), displaybind, bindable] BSTR wordBreak ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFY), displaybind, bindable] BSTR textJustify ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFYTRIM), displaybind, bindable] BSTR textJustifyTrim ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TEXTKASHIDA), displaybind, bindable] VARIANT textKashida ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BLOCKDIRECTION), displaybind, bindable] BSTR blockDirection ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDCHAR), displaybind, bindable] VARIANT layoutGridChar ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDLINE), displaybind, bindable] VARIANT layoutGridLine ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDMODE), displaybind, bindable] BSTR layoutGridMode ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDTYPE), displaybind, bindable] BSTR layoutGridType ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERSTYLE), displaybind, bindable] BSTR borderStyle ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERCOLOR), displaybind, bindable] BSTR borderColor ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_BORDERWIDTH), displaybind, bindable] BSTR borderWidth ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_PADDING), displaybind, bindable] BSTR padding ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_MARGIN), displaybind, bindable] BSTR margin ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_ACCELERATOR), displaybind, bindable] BSTR accelerator ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_OVERFLOWX), displaybind, bindable] BSTR overflowX ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_OVERFLOWY), displaybind, bindable] BSTR overflowY ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE_TEXTTRANSFORM), displaybind, bindable] BSTR textTransform ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_LAYOUTFLOW), displaybind, bindable] BSTR layoutFlow ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_WORDWRAP), displaybind, bindable] BSTR wordWrap ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_TEXTUNDERLINEPOSITION), displaybind, bindable] BSTR textUnderlinePosition ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_HASLAYOUT), displaybind, bindable] VARIANT_BOOL hasLayout ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_SCROLLBARBASECOLOR), displaybind, bindable] VARIANT scrollbarBaseColor ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_SCROLLBARFACECOLOR), displaybind, bindable] VARIANT scrollbarFaceColor ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] VARIANT scrollbar3dLightColor ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_SCROLLBARSHADOWCOLOR), displaybind, bindable] VARIANT scrollbarShadowColor ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] VARIANT scrollbarHighlightColor ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] VARIANT scrollbarDarkShadowColor ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_SCROLLBARARROWCOLOR), displaybind, bindable] VARIANT scrollbarArrowColor ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_SCROLLBARTRACKCOLOR), displaybind, bindable] VARIANT scrollbarTrackColor ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_WRITINGMODE), displaybind, bindable] BSTR writingMode ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_ZOOM), displaybind, bindable] VARIANT zoom ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_FILTER), displaybind, bindable] BSTR filter ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_TEXTALIGNLAST), displaybind, bindable] BSTR textAlignLast ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_TEXTKASHIDASPACE), displaybind, bindable] VARIANT textKashidaSpace ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE2_ISBLOCK), displaybind, bindable, hidden, restricted, nonbrowsable] VARIANT_BOOL isBlock ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE3_TEXTOVERFLOW), displaybind, bindable] BSTR textOverflow ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE3_MINHEIGHT), displaybind, bindable] VARIANT minHeight ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE3_WORDSPACING), displaybind, bindable] VARIANT wordSpacing ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE3_WHITESPACE), displaybind, bindable] BSTR whiteSpace ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE4_MSINTERPOLATIONMODE), displaybind, bindable] BSTR msInterpolationMode ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE4_MAXHEIGHT), displaybind, bindable] VARIANT maxHeight ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE4_MINWIDTH), displaybind, bindable] VARIANT minWidth ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE4_MAXWIDTH), displaybind, bindable] VARIANT maxWidth ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_CAPTIONSIDE), displaybind, bindable] BSTR captionSide ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_OUTLINE), displaybind, bindable] BSTR outline ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_OUTLINEWIDTH), displaybind, bindable] VARIANT outlineWidth ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_OUTLINESTYLE), displaybind, bindable] BSTR outlineStyle ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_OUTLINECOLOR), displaybind, bindable] VARIANT outlineColor ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_BOXSIZING), displaybind, bindable] BSTR boxSizing ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_BORDERSPACING), displaybind, bindable] BSTR borderSpacing ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_ORPHANS), displaybind, bindable] VARIANT orphans ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_WIDOWS), displaybind, bindable] VARIANT widows ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_PAGEBREAKINSIDE), displaybind, bindable] BSTR pageBreakInside ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_EMPTYCELLS), displaybind, bindable] BSTR emptyCells ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_MSBLOCKPROGRESSION), displaybind, bindable] BSTR msBlockProgression ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_QUOTES), displaybind, bindable] BSTR quotes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f3dc-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLCurrentStyle {
    [default] dispinterface DispHTMLCurrentStyle;
    interface IHTMLCSSStyleDeclaration;
    interface IHTMLCSSStyleDeclaration2;
    interface IHTMLCurrentStyle;
    interface IHTMLCurrentStyle2;
    interface IHTMLCurrentStyle3;
    interface IHTMLCurrentStyle4;
    interface IHTMLCurrentStyle5;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CCurrentStyle;")
  interface IHTMLElement;
  [odl, oleautomation, dual, uuid (3050f4a3-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLRect : IDispatch {
    [propput, id (DISPID_IHTMLRECT_LEFT)] HRESULT left ([in] long v);
    [propget, id (DISPID_IHTMLRECT_LEFT)] HRESULT left ([retval, out] long *p);
    [propput, id (DISPID_IHTMLRECT_TOP)] HRESULT top ([in] long v);
    [propget, id (DISPID_IHTMLRECT_TOP)] HRESULT top ([retval, out] long *p);
    [propput, id (DISPID_IHTMLRECT_RIGHT)] HRESULT right ([in] long v);
    [propget, id (DISPID_IHTMLRECT_RIGHT)] HRESULT right ([retval, out] long *p);
    [propput, id (DISPID_IHTMLRECT_BOTTOM)] HRESULT bottom ([in] long v);
    [propget, id (DISPID_IHTMLRECT_BOTTOM)] HRESULT bottom ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (3051076c-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLRect2 : IDispatch {
    [propget, id (DISPID_IHTMLRECT2_WIDTH)] HRESULT width ([retval, out] float *p);
    [propget, id (DISPID_IHTMLRECT2_HEIGHT)] HRESULT height ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (3050f4a4-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLRectCollection : IDispatch {
    [propget, id (DISPID_IHTMLRECTCOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLRECTCOLLECTION__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLRECTCOLLECTION_ITEM)] HRESULT item ([in] VARIANT *pvarIndex,[retval, out] VARIANT *pvarResult);
  };
  interface IHTMLElementCollection;
  interface IHTMLElement2;
  interface IHTMLAttributeCollection3;
  interface IDOMDocumentType;
  interface IHTMLDocument7;
  [odl, oleautomation, dual, uuid (3050f5da-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMNode : IDispatch {
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] HRESULT nodeType ([retval, out] long *p);
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] HRESULT parentNode ([retval, out] IHTMLDOMNode **p);
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] HRESULT hasChildNodes ([retval, out] VARIANT_BOOL *fChildren);
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] HRESULT childNodes ([retval, out] IDispatch **p);
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] HRESULT attributes ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] HRESULT insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild,[retval, out] IHTMLDOMNode **node);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] HRESULT removeChild ([in] IHTMLDOMNode *oldChild,[retval, out] IHTMLDOMNode **node);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] HRESULT replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild,[retval, out] IHTMLDOMNode **node);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] HRESULT cloneNode ([in] VARIANT_BOOL fDeep,[retval, out] IHTMLDOMNode **clonedNode);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] HRESULT removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep,[defaultvalue (0), retval, out] IHTMLDOMNode **removed);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] HRESULT swapNode ([in] IHTMLDOMNode *otherNode,[retval, out] IHTMLDOMNode **swappedNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] HRESULT replaceNode ([in] IHTMLDOMNode *replacement,[retval, out] IHTMLDOMNode **replaced);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] HRESULT appendChild ([in] IHTMLDOMNode *newChild,[retval, out] IHTMLDOMNode **node);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] HRESULT nodeName ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] HRESULT nodeValue ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] HRESULT nodeValue ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] HRESULT firstChild ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] HRESULT lastChild ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] HRESULT previousSibling ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] HRESULT nextSibling ([retval, out] IHTMLDOMNode **p);
  };
  [odl, oleautomation, dual, uuid (3050f80b-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMNode2 : IDispatch {
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] HRESULT ownerDocument ([retval, out] IDispatch **p);
  };
  [odl, oleautomation, dual, uuid (305106e0-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMNode3 : IDispatch {
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] HRESULT prefix ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] HRESULT prefix ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] HRESULT localName ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] HRESULT namespaceURI ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] HRESULT textContent ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] HRESULT textContent ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] HRESULT isEqualNode ([in] IHTMLDOMNode3 *otherNode,[retval, out] VARIANT_BOOL *isEqual);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] HRESULT lookupNamespaceURI ([in] VARIANT *pvarPrefix,[retval, out] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] HRESULT lookupPrefix ([in] VARIANT *pvarNamespaceURI,[retval, out] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] HRESULT isDefaultNamespace ([in] VARIANT *pvarNamespace,[retval, out] VARIANT_BOOL *pfDefaultNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] HRESULT appendChild ([in] IHTMLDOMNode *newChild,[retval, out] IHTMLDOMNode **node);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] HRESULT insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild,[retval, out] IHTMLDOMNode **node);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] HRESULT removeChild ([in] IHTMLDOMNode *oldChild,[retval, out] IHTMLDOMNode **node);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] HRESULT replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild,[retval, out] IHTMLDOMNode **node);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] HRESULT isSameNode ([in] IHTMLDOMNode3 *otherNode,[retval, out] VARIANT_BOOL *isSame);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] HRESULT compareDocumentPosition ([in] IHTMLDOMNode *otherNode,[retval, out] USHORT *flags);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] HRESULT isSupported ([in] BSTR feature,[in] VARIANT version,[retval, out] VARIANT_BOOL *pfisSupported);
  };
  [odl, oleautomation, dual, uuid (3050f4b0-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMAttribute : IDispatch {
    [propget, id (DISPID_IHTMLDOMATTRIBUTE_NODENAME)] HRESULT nodeName ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDOMATTRIBUTE_NODEVALUE)] HRESULT nodeValue ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE_NODEVALUE)] HRESULT nodeValue ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE_SPECIFIED)] HRESULT specified ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (3050f810-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMAttribute2 : IDispatch {
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_NAME)] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDOMATTRIBUTE2_VALUE)] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_VALUE)] HRESULT value ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_EXPANDO)] HRESULT expando ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_NODETYPE)] HRESULT nodeType ([retval, out] long *p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_PARENTNODE)] HRESULT parentNode ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_CHILDNODES)] HRESULT childNodes ([retval, out] IDispatch **p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_FIRSTCHILD)] HRESULT firstChild ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_LASTCHILD)] HRESULT lastChild ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_PREVIOUSSIBLING)] HRESULT previousSibling ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_NEXTSIBLING)] HRESULT nextSibling ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_ATTRIBUTES)] HRESULT attributes ([retval, out] IDispatch **p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_OWNERDOCUMENT)] HRESULT ownerDocument ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMATTRIBUTE2_INSERTBEFORE)] HRESULT insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild,[retval, out] IHTMLDOMNode **node);
    [id (DISPID_IHTMLDOMATTRIBUTE2_REPLACECHILD)] HRESULT replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild,[retval, out] IHTMLDOMNode **node);
    [id (DISPID_IHTMLDOMATTRIBUTE2_REMOVECHILD)] HRESULT removeChild ([in] IHTMLDOMNode *oldChild,[retval, out] IHTMLDOMNode **node);
    [id (DISPID_IHTMLDOMATTRIBUTE2_APPENDCHILD)] HRESULT appendChild ([in] IHTMLDOMNode *newChild,[retval, out] IHTMLDOMNode **node);
    [id (DISPID_IHTMLDOMATTRIBUTE2_HASCHILDNODES)] HRESULT hasChildNodes ([retval, out] VARIANT_BOOL *fChildren);
    [id (DISPID_IHTMLDOMATTRIBUTE2_CLONENODE)] HRESULT cloneNode ([in] VARIANT_BOOL fDeep,[retval, out] IHTMLDOMAttribute **clonedNode);
  };
  [odl, oleautomation, dual, uuid (30510468-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMAttribute3 : IDispatch {
    [propput, id (DISPID_IHTMLDOMATTRIBUTE3_IE8_NODEVALUE)] HRESULT nodeValue ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE3_IE8_NODEVALUE)] HRESULT nodeValue ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOMATTRIBUTE3_IE8_VALUE)] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE3_IE8_VALUE)] HRESULT value ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE3_IE8_SPECIFIED)] HRESULT specified ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE3_OWNERELEMENT)] HRESULT ownerElement ([retval, out] IHTMLElement2 **p);
  };
  [odl, oleautomation, dual, uuid (305106f9-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMAttribute4 : IDispatch {
    [propput, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_NODEVALUE)] HRESULT nodeValue ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_NODEVALUE)] HRESULT nodeValue ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_NODENAME)] HRESULT nodeName ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_NAME)] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_VALUE)] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_VALUE)] HRESULT value ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_FIRSTCHILD)] HRESULT firstChild ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_LASTCHILD)] HRESULT lastChild ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_CHILDNODES)] HRESULT childNodes ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMATTRIBUTE4_HASATTRIBUTES)] HRESULT hasAttributes ([retval, out] VARIANT_BOOL *pfHasAttributes);
    [id (DISPID_IHTMLDOMATTRIBUTE4_IE9_HASCHILDNODES)] HRESULT hasChildNodes ([retval, out] VARIANT_BOOL *fChildren);
    [id (DISPID_IHTMLDOMATTRIBUTE4_NORMALIZE)] HRESULT normalize ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_SPECIFIED)] HRESULT specified ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (3050f4b1-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMTextNode : IDispatch {
    [propput, id (DISPID_IHTMLDOMTEXTNODE_DATA)] HRESULT data ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMTEXTNODE_DATA)] HRESULT data ([retval, out] BSTR *p);
    [id (DISPID_IHTMLDOMTEXTNODE_TOSTRING)] HRESULT toString ([retval, out] BSTR *String);
    [propget, id (DISPID_IHTMLDOMTEXTNODE_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLDOMTEXTNODE_SPLITTEXT)] HRESULT splitText ([in] long offset,[retval, out] IHTMLDOMNode **pRetNode);
  };
  [odl, oleautomation, dual, uuid (3050f809-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMTextNode2 : IDispatch {
    [id (DISPID_IHTMLDOMTEXTNODE2_SUBSTRINGDATA)] HRESULT substringData ([in] long offset,[in] long Count,[retval, out] BSTR *pbstrsubString);
    [id (DISPID_IHTMLDOMTEXTNODE2_APPENDDATA)] HRESULT appendData ([in] BSTR bstrstring);
    [id (DISPID_IHTMLDOMTEXTNODE2_INSERTDATA)] HRESULT insertData ([in] long offset,[in] BSTR bstrstring);
    [id (DISPID_IHTMLDOMTEXTNODE2_DELETEDATA)] HRESULT deleteData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLDOMTEXTNODE2_REPLACEDATA)] HRESULT replaceData ([in] long offset,[in] long Count,[in] BSTR bstrstring);
  };
  [odl, oleautomation, dual, uuid (3051073e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMTextNode3 : IDispatch {
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_SUBSTRINGDATA)] HRESULT substringData ([in] long offset,[in] long Count,[retval, out] BSTR *pbstrsubString);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_INSERTDATA)] HRESULT insertData ([in] long offset,[in] BSTR bstrstring);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_DELETEDATA)] HRESULT deleteData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_REPLACEDATA)] HRESULT replaceData ([in] long offset,[in] long Count,[in] BSTR bstrstring);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_SPLITTEXT)] HRESULT splitText ([in] long offset,[retval, out] IHTMLDOMNode **pRetNode);
    [propget, id (DISPID_IHTMLDOMTEXTNODE3_WHOLETEXT)] HRESULT wholeText ([retval, out] BSTR *p);
    [id (DISPID_IHTMLDOMTEXTNODE3_REPLACEWHOLETEXT)] HRESULT replaceWholeText ([in] BSTR bstrText,[retval, out] IHTMLDOMNode **ppRetNode);
    [id (DISPID_IHTMLDOMTEXTNODE3_HASATTRIBUTES)] HRESULT hasAttributes ([retval, out] VARIANT_BOOL *pfHasAttributes);
    [id (DISPID_IHTMLDOMTEXTNODE3_NORMALIZE)] HRESULT normalize ();
  };
  [odl, oleautomation, dual, uuid (3050f80d-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMImplementation : IDispatch {
    [id (DISPID_IHTMLDOMIMPLEMENTATION_HASFEATURE)] HRESULT hasFeature ([in] BSTR bstrfeature,[optional, in] VARIANT version,[retval, out] VARIANT_BOOL *pfHasFeature);
  };
  [odl, oleautomation, dual, uuid (3051073c-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMImplementation2 : IDispatch {
    [id (DISPID_IHTMLDOMIMPLEMENTATION2_CREATEDOCUMENTTYPE)] HRESULT createDocumentType ([in] BSTR bstrQualifiedName,[in] VARIANT *pvarPublicId,[in] VARIANT *pvarSystemId,[retval, out] IDOMDocumentType **newDocumentType);
    [id (DISPID_IHTMLDOMIMPLEMENTATION2_CREATEDOCUMENT)] HRESULT createDocument ([in] VARIANT *pvarNS,[in] VARIANT *pvarTagName,[in] IDOMDocumentType *pDocumentType,[retval, out] IHTMLDocument7 **ppnewDocument);
    [id (DISPID_IHTMLDOMIMPLEMENTATION2_CREATEHTMLDOCUMENT)] HRESULT createHTMLDocument ([in] BSTR bstrTitle,[retval, out] IHTMLDocument7 **ppnewDocument);
    [id (DISPID_IHTMLDOMIMPLEMENTATION2_IE9_HASFEATURE)] HRESULT hasFeature ([in] BSTR bstrfeature,[optional, in] VARIANT version,[retval, out] VARIANT_BOOL *pfHasFeature);
  };
  [hidden, uuid (3050f564-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDOMAttribute {
    properties:
    methods:
    [propget, id (DISPID_IHTMLDOMATTRIBUTE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMATTRIBUTE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE_SPECIFIED)] VARIANT_BOOL specified ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_NAME)] BSTR name ();
    [propput, id (DISPID_IHTMLDOMATTRIBUTE2_VALUE)] void value (BSTR v);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_VALUE)] BSTR value ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_EXPANDO)] VARIANT_BOOL expando ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_ATTRIBUTES)] IDispatch *attributes ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLDOMATTRIBUTE2_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMATTRIBUTE2_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMATTRIBUTE2_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMATTRIBUTE2_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMATTRIBUTE2_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [id (DISPID_IHTMLDOMATTRIBUTE2_CLONENODE)] IHTMLDOMAttribute *cloneNode ([in] VARIANT_BOOL fDeep);
    [propput, id (DISPID_IHTMLDOMATTRIBUTE3_IE8_NODEVALUE)] void ie8_nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE3_IE8_NODEVALUE)] VARIANT ie8_nodeValue ();
    [propput, id (DISPID_IHTMLDOMATTRIBUTE3_IE8_VALUE)] void ie8_value (BSTR v);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE3_IE8_VALUE)] BSTR ie8_value ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE3_IE8_SPECIFIED)] VARIANT_BOOL ie8_specified ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE3_OWNERELEMENT)] IHTMLElement2 *ownerElement ();
    [propput, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_NODEVALUE)] void ie9_nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_NODEVALUE)] VARIANT ie9_nodeValue ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_NODENAME)] BSTR ie9_nodeName ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_NAME)] BSTR ie9_name ();
    [propput, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_VALUE)] void ie9_value (BSTR v);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_VALUE)] BSTR ie9_value ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_FIRSTCHILD)] IHTMLDOMNode *ie9_firstChild ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_LASTCHILD)] IHTMLDOMNode *ie9_lastChild ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_CHILDNODES)] IDispatch *ie9_childNodes ();
    [id (DISPID_IHTMLDOMATTRIBUTE4_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [id (DISPID_IHTMLDOMATTRIBUTE4_IE9_HASCHILDNODES)] VARIANT_BOOL ie9_hasChildNodes ();
    [id (DISPID_IHTMLDOMATTRIBUTE4_NORMALIZE)] void normalize ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_SPECIFIED)] VARIANT_BOOL ie9_specified ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
  };
  [noncreatable, uuid (3050f4b2-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDOMAttribute {
    [default] dispinterface DispHTMLDOMAttribute;
    interface IHTMLDOMAttribute;
    interface IHTMLDOMAttribute2;
    interface IHTMLDOMAttribute3;
    interface IHTMLDOMAttribute4;
    interface IHTMLDOMConstructor;
    interface IHTMLDOMNode3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CAttribute;")
  [hidden, uuid (3050f565-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDOMTextNode {
    properties:
    methods:
    [propput, id (DISPID_IHTMLDOMTEXTNODE_DATA)] void data (BSTR v);
    [propget, id (DISPID_IHTMLDOMTEXTNODE_DATA)] BSTR data ();
    [id (DISPID_IHTMLDOMTEXTNODE_TOSTRING)] BSTR toString ();
    [propget, id (DISPID_IHTMLDOMTEXTNODE_LENGTH)] long length ();
    [id (DISPID_IHTMLDOMTEXTNODE_SPLITTEXT)] IHTMLDOMNode *splitText ([in] long offset);
    [id (DISPID_IHTMLDOMTEXTNODE2_SUBSTRINGDATA)] BSTR substringData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLDOMTEXTNODE2_APPENDDATA)] void appendData ([in] BSTR bstrstring);
    [id (DISPID_IHTMLDOMTEXTNODE2_INSERTDATA)] void insertData ([in] long offset,[in] BSTR bstrstring);
    [id (DISPID_IHTMLDOMTEXTNODE2_DELETEDATA)] void deleteData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLDOMTEXTNODE2_REPLACEDATA)] void replaceData ([in] long offset,[in] long Count,[in] BSTR bstrstring);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_SUBSTRINGDATA)] BSTR ie9_substringData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_INSERTDATA)] void ie9_insertData ([in] long offset,[in] BSTR bstrstring);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_DELETEDATA)] void ie9_deleteData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_REPLACEDATA)] void ie9_replaceData ([in] long offset,[in] long Count,[in] BSTR bstrstring);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_SPLITTEXT)] IHTMLDOMNode *ie9_splitText ([in] long offset);
    [propget, id (DISPID_IHTMLDOMTEXTNODE3_WHOLETEXT)] BSTR wholeText ();
    [id (DISPID_IHTMLDOMTEXTNODE3_REPLACEWHOLETEXT)] IHTMLDOMNode *replaceWholeText ([in] BSTR bstrText);
    [id (DISPID_IHTMLDOMTEXTNODE3_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [id (DISPID_IHTMLDOMTEXTNODE3_NORMALIZE)] void normalize ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [id (DISPID_IEVENTTARGET_ADDEVENTLISTENER)] void addEventListener ([in] BSTR type,[in] IDispatch *listener,[in] VARIANT_BOOL useCapture);
    [id (DISPID_IEVENTTARGET_REMOVEEVENTLISTENER)] void removeEventListener ([in] BSTR type,[in] IDispatch *listener,[in] VARIANT_BOOL useCapture);
    [id (DISPID_IEVENTTARGET_DISPATCHEVENT)] VARIANT_BOOL dispatchEvent ([in] IDOMEvent *evt);
  };
  [noncreatable, uuid (3050f4ba-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDOMTextNode {
    [default] dispinterface DispHTMLDOMTextNode;
    interface IHTMLDOMTextNode;
    interface IHTMLDOMTextNode2;
    interface IHTMLDOMTextNode3;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDOMConstructor;
    interface IEventTarget;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMTextNode;")
  [hidden, uuid (3050f58f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDOMImplementation {
    properties:
    methods:
    [id (DISPID_IHTMLDOMIMPLEMENTATION_HASFEATURE)] VARIANT_BOOL hasFeature ([in] BSTR bstrfeature,[optional, in] VARIANT version);
    [id (DISPID_IHTMLDOMIMPLEMENTATION2_CREATEDOCUMENTTYPE)] IDOMDocumentType *createDocumentType ([in] BSTR bstrQualifiedName,[in] VARIANT *pvarPublicId,[in] VARIANT *pvarSystemId);
    [id (DISPID_IHTMLDOMIMPLEMENTATION2_CREATEDOCUMENT)] IHTMLDocument7 *createDocument ([in] VARIANT *pvarNS,[in] VARIANT *pvarTagName,[in] IDOMDocumentType *pDocumentType);
    [id (DISPID_IHTMLDOMIMPLEMENTATION2_CREATEHTMLDOCUMENT)] IHTMLDocument7 *createHTMLDocument ([in] BSTR bstrTitle);
    [id (DISPID_IHTMLDOMIMPLEMENTATION2_IE9_HASFEATURE)] VARIANT_BOOL ie9_hasFeature ([in] BSTR bstrfeature,[optional, in] VARIANT version);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f80e-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDOMImplementation {
    [default] dispinterface DispHTMLDOMImplementation;
    interface IHTMLDOMImplementation;
    interface IHTMLDOMImplementation2;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMImplementation;")
  [odl, oleautomation, dual, uuid (3050f4c3-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAttributeCollection : IDispatch {
    [propget, id (DISPID_IHTMLATTRIBUTECOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLATTRIBUTECOLLECTION__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION_ITEM)] HRESULT item ([optional, in] VARIANT *name,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (3050f80a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAttributeCollection2 : IDispatch {
    [id (DISPID_IHTMLATTRIBUTECOLLECTION2_GETNAMEDITEM)] HRESULT getNamedItem ([in] BSTR bstrName,[retval, out] IHTMLDOMAttribute **newretNode);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION2_SETNAMEDITEM)] HRESULT setNamedItem ([in] IHTMLDOMAttribute *ppNode,[retval, out] IHTMLDOMAttribute **newretNode);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION2_REMOVENAMEDITEM)] HRESULT removeNamedItem ([in] BSTR bstrName,[retval, out] IHTMLDOMAttribute **newretNode);
  };
  [odl, oleautomation, dual, uuid (30510469-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAttributeCollection3 : IDispatch {
    [id (DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_GETNAMEDITEM)] HRESULT getNamedItem ([in] BSTR bstrName,[retval, out] IHTMLDOMAttribute **ppNodeOut);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_SETNAMEDITEM)] HRESULT setNamedItem ([in] IHTMLDOMAttribute *pNodeIn,[retval, out] IHTMLDOMAttribute **ppNodeOut);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_REMOVENAMEDITEM)] HRESULT removeNamedItem ([in] BSTR bstrName,[retval, out] IHTMLDOMAttribute **ppNodeOut);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_ITEM)] HRESULT item ([in] long index,[retval, out] IHTMLDOMAttribute **ppNodeOut);
    [propget, id (DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_LENGTH)] HRESULT length ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (305106fa-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAttributeCollection4 : IDispatch {
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_GETNAMEDITEMNS)] HRESULT getNamedItemNS ([in] VARIANT *pvarNS,[in] BSTR bstrName,[retval, out] IHTMLDOMAttribute2 **ppNodeOut);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_SETNAMEDITEMNS)] HRESULT setNamedItemNS ([in] IHTMLDOMAttribute2 *pNodeIn,[retval, out] IHTMLDOMAttribute2 **ppNodeOut);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_REMOVENAMEDITEMNS)] HRESULT removeNamedItemNS ([in] VARIANT *pvarNS,[in] BSTR bstrName,[retval, out] IHTMLDOMAttribute2 **ppNodeOut);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_GETNAMEDITEM)] HRESULT getNamedItem ([in] BSTR bstrName,[retval, out] IHTMLDOMAttribute2 **ppNodeOut);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_SETNAMEDITEM)] HRESULT setNamedItem ([in] IHTMLDOMAttribute2 *pNodeIn,[retval, out] IHTMLDOMAttribute2 **ppNodeOut);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_REMOVENAMEDITEM)] HRESULT removeNamedItem ([in] BSTR bstrName,[retval, out] IHTMLDOMAttribute2 **ppNodeOut);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_ITEM)] HRESULT item ([in] long index,[retval, out] IHTMLDOMAttribute2 **ppNodeOut);
    [propget, id (DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_LENGTH)] HRESULT length ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (3050f5ab-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMChildrenCollection : IDispatch {
    [propget, id (DISPID_IHTMLDOMCHILDRENCOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLDOMCHILDRENCOLLECTION__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLDOMCHILDRENCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] IDispatch **ppItem);
  };
  [odl, oleautomation, dual, uuid (30510791-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMChildrenCollection2 : IDispatch {
    [id (DISPID_IHTMLDOMCHILDRENCOLLECTION2_IE9_ITEM)] HRESULT item ([in] long index,[retval, out] IDispatch **ppItem);
  };
  [hidden, uuid (3050f56c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLAttributeCollection {
    properties:
    methods:
    [propget, id (DISPID_IHTMLATTRIBUTECOLLECTION_LENGTH)] long length ();
    [propget, id (DISPID_IHTMLATTRIBUTECOLLECTION__NEWENUM), hidden, restricted] IUnknown *_newEnum ();
    [id (DISPID_IHTMLATTRIBUTECOLLECTION_ITEM)] IDispatch *item ([optional, in] VARIANT *name);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION2_GETNAMEDITEM)] IHTMLDOMAttribute *getNamedItem ([in] BSTR bstrName);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION2_SETNAMEDITEM)] IHTMLDOMAttribute *setNamedItem ([in] IHTMLDOMAttribute *ppNode);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION2_REMOVENAMEDITEM)] IHTMLDOMAttribute *removeNamedItem ([in] BSTR bstrName);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_GETNAMEDITEM)] IHTMLDOMAttribute *ie8_getNamedItem ([in] BSTR bstrName);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_SETNAMEDITEM)] IHTMLDOMAttribute *ie8_setNamedItem ([in] IHTMLDOMAttribute *pNodeIn);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_REMOVENAMEDITEM)] IHTMLDOMAttribute *ie8_removeNamedItem ([in] BSTR bstrName);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_ITEM)] IHTMLDOMAttribute *ie8_item ([in] long index);
    [propget, id (DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_LENGTH)] long ie8_length ();
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_GETNAMEDITEMNS)] IHTMLDOMAttribute2 *getNamedItemNS ([in] VARIANT *pvarNS,[in] BSTR bstrName);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_SETNAMEDITEMNS)] IHTMLDOMAttribute2 *setNamedItemNS ([in] IHTMLDOMAttribute2 *pNodeIn);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_REMOVENAMEDITEMNS)] IHTMLDOMAttribute2 *removeNamedItemNS ([in] VARIANT *pvarNS,[in] BSTR bstrName);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_GETNAMEDITEM)] IHTMLDOMAttribute2 *ie9_getNamedItem ([in] BSTR bstrName);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_SETNAMEDITEM)] IHTMLDOMAttribute2 *ie9_setNamedItem ([in] IHTMLDOMAttribute2 *pNodeIn);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_REMOVENAMEDITEM)] IHTMLDOMAttribute2 *ie9_removeNamedItem ([in] BSTR bstrName);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_ITEM)] IHTMLDOMAttribute2 *ie9_item ([in] long index);
    [propget, id (DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_LENGTH)] long ie9_length ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f4cc-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLAttributeCollection {
    [default] dispinterface DispHTMLAttributeCollection;
    interface IHTMLAttributeCollection;
    interface IHTMLAttributeCollection2;
    interface IHTMLAttributeCollection3;
    interface IHTMLAttributeCollection4;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CAttrCollectionator;")
  [hidden, uuid (3050f59b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispStaticNodeList {
    properties:
    methods:
    [propget, id (DISPID_IHTMLDOMCHILDRENCOLLECTION_LENGTH)] long length ();
    [propget, id (DISPID_IHTMLDOMCHILDRENCOLLECTION__NEWENUM), hidden, restricted] IUnknown *_newEnum ();
    [id (DISPID_IHTMLDOMCHILDRENCOLLECTION_ITEM)] IDispatch *item ([in] long index);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (30510467-98b5-11cf-bb82-00aa00bdce0b)] coclass StaticNodeList {
    [default] dispinterface DispStaticNodeList;
    interface IHTMLDOMChildrenCollection;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStaticNodeList;")
  [hidden, uuid (3050f577-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMChildrenCollection {
    properties:
    methods:
    [propget, id (DISPID_IHTMLDOMCHILDRENCOLLECTION_LENGTH)] long length ();
    [propget, id (DISPID_IHTMLDOMCHILDRENCOLLECTION__NEWENUM), hidden, restricted] IUnknown *_newEnum ();
    [id (DISPID_IHTMLDOMCHILDRENCOLLECTION_ITEM)] IDispatch *item ([in] long index);
    [id (DISPID_IHTMLDOMCHILDRENCOLLECTION2_IE9_ITEM)] IDispatch *ie9_item ([in] long index);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f5aa-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMChildrenCollection {
    [default] dispinterface DispDOMChildrenCollection;
    interface IHTMLDOMChildrenCollection;
    interface IHTMLDOMChildrenCollection2;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMChildrenCollection;")
  [hidden, uuid (3051075e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLElementEvents4 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS4_ONABORT)] void onabort ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS4_ONCHANGE)] void onchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS4_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS4_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS4_ONRESET)] void onreset ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS4_ONSELECT)] void onselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS4_ONSUBMIT)] void onsubmit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS4_ONMSCONTENTZOOM)] void onmscontentzoom ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f59f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLElementEvents3 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS3_ONONLINE)] void ononline ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS3_ONOFFLINE)] void onoffline ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f60f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLElementEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f33c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLElementEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
  };
  typedef enum _htmlListType {
    htmlListTypeNotSet = 0,
    htmlListTypeLargeAlpha = 1,
    htmlListTypeSmallAlpha = 2,
    htmlListTypeLargeRoman = 3,
    htmlListTypeSmallRoman = 4,
    htmlListTypeNumbers = 5,
    htmlListTypeDisc = 6,
    htmlListTypeCircle = 7,
    htmlListTypeSquare = 8,
    htmlListType_Max = 0x7FFFFFFF
  } htmlListType;

  typedef enum _htmlMethod {
    htmlMethodNotSet = 0,
    htmlMethodGet = 1,
    htmlMethodPost = 2,
    htmlMethod_Max = 0x7FFFFFFF
  } htmlMethod;

  typedef enum _htmlWrap {
    htmlWrapOff = 1,
    htmlWrapSoft = 2,
    htmlWrapHard = 3,
    htmlWrap_Max = 0x7FFFFFFF
  } htmlWrap;

  typedef enum _htmlDir {
    htmlDirNotSet = 0,
    htmlDirLeftToRight = 1,
    htmlDirRightToLeft = 2,
    htmlDir_Max = 0x7FFFFFFF
  } htmlDir;

  typedef enum _htmlEditable {
    htmlEditableInherit = 0,
    htmlEditableTrue = 1,
    htmlEditableFalse = 2,
    htmlEditable_Max = 0x7FFFFFFF
  } htmlEditable;

  typedef enum _htmlInput {
    htmlInputNotSet = 0,
    htmlInputButton = 1,
    htmlInputCheckbox = 2,
    htmlInputFile = 3,
    htmlInputHidden = 4,
    htmlInputImage = 5,
    htmlInputPassword = 6,
    htmlInputRadio = 7,
    htmlInputReset = 8,
    htmlInputSelectOne = 9,
    htmlInputSelectMultiple = 10,
    htmlInputSubmit = 11,
    htmlInputText = 12,
    htmlInputTextarea = 13,
    htmlInputRichtext = 14,
    htmlInputRange = 15,
    htmlInputUrl = 16,
    htmlInputEmail = 17,
    htmlInputNumber = 18,
    htmlInputTel = 19,
    htmlInputSearch = 20,
    htmlInput_Max = 0x7FFFFFFF
  } htmlInput;

  typedef enum _htmlSpellCheck {
    htmlSpellCheckNotSet = 0,
    htmlSpellCheckTrue = 1,
    htmlSpellCheckFalse = 2,
    htmlSpellCheckDefault = 3,
    htmlSpellCheck_Max = 0x7FFFFFFF
  } htmlSpellCheck;

  typedef enum _htmlEncoding {
    htmlEncodingURL = 0,
    htmlEncodingMultipart = 1,
    htmlEncodingText = 2,
    htmlEncoding_Max = 0x7FFFFFFF
  } htmlEncoding;

  typedef enum _htmlAdjacency {
    htmlAdjacencyBeforeBegin = 1,
    htmlAdjacencyAfterBegin = 2,
    htmlAdjacencyBeforeEnd = 3,
    htmlAdjacencyAfterEnd = 4,
    htmlAdjacency_Max = 0x7FFFFFFF
  } htmlAdjacency;

  typedef enum _htmlTabIndex {
    htmlTabIndexNotSet = -32768,
    htmlTabIndex_Max = 0x7FFFFFFF
  } htmlTabIndex;

  typedef enum _htmlComponent {
    htmlComponentClient = 0,
    htmlComponentSbLeft = 1,
    htmlComponentSbPageLeft = 2,
    htmlComponentSbHThumb = 3,
    htmlComponentSbPageRight = 4,
    htmlComponentSbRight = 5,
    htmlComponentSbUp = 6,
    htmlComponentSbPageUp = 7,
    htmlComponentSbVThumb = 8,
    htmlComponentSbPageDown = 9,
    htmlComponentSbDown = 10,
    htmlComponentSbLeft2 = 11,
    htmlComponentSbPageLeft2 = 12,
    htmlComponentSbRight2 = 13,
    htmlComponentSbPageRight2 = 14,
    htmlComponentSbUp2 = 15,
    htmlComponentSbPageUp2 = 16,
    htmlComponentSbDown2 = 17,
    htmlComponentSbPageDown2 = 18,
    htmlComponentSbTop = 19,
    htmlComponentSbBottom = 20,
    htmlComponentOutside = 21,
    htmlComponentGHTopLeft = 22,
    htmlComponentGHLeft = 23,
    htmlComponentGHTop = 24,
    htmlComponentGHBottomLeft = 25,
    htmlComponentGHTopRight = 26,
    htmlComponentGHBottom = 27,
    htmlComponentGHRight = 28,
    htmlComponentGHBottomRight = 29,
    htmlComponent_Max = 0x7FFFFFFF
  } htmlComponent;

  typedef enum _htmlApplyLocation {
    htmlApplyLocationInside = 0,
    htmlApplyLocationOutside = 1,
    htmlApplyLocation_Max = 0x7FFFFFFF
  } htmlApplyLocation;

  typedef enum _htmlGlyphMode {
    htmlGlyphModeNone = 0,
    htmlGlyphModeBegin = 1,
    htmlGlyphModeEnd = 2,
    htmlGlyphModeBoth = 3,
    htmlGlyphMode_Max = 0x7FFFFFFF
  } htmlGlyphMode;

  typedef enum _htmlDraggable {
    htmlDraggableAuto = 0,
    htmlDraggableTrue = 1,
    htmlDraggableFalse = 2,
    htmlDraggable_Max = 0x7FFFFFFF
  } htmlDraggable;

  interface IHTMLEventObj;
  interface IHTMLElementCollection;
  interface IHTMLFiltersCollection;
  interface IRulesAppliedCollection;

  [odl, oleautomation, dual, uuid (3050f1ff-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLElement : IDispatch {
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] HRESULT setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] HRESULT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags,[defaultvalue (0), retval, out] VARIANT *AttributeValue);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] HRESULT removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags,[defaultvalue (0), retval, out] VARIANT_BOOL *pfSuccess);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] HRESULT className ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT_CLASSNAME), propget, bindable] HRESULT className ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] HRESULT id ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] HRESULT id ([retval, out] BSTR *p);
    [id (DISPID_IHTMLELEMENT_TAGNAME), propget] HRESULT tagName ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] HRESULT parentElement ([retval, out] IHTMLElement **p);
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] HRESULT style ([retval, out] IHTMLStyle **p);
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] HRESULT onhelp ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONHELP), propget, displaybind, bindable] HRESULT onhelp ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] HRESULT onclick ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] HRESULT onclick ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] HRESULT ondblclick ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDBLCLICK), propget, displaybind, bindable] HRESULT ondblclick ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] HRESULT onkeydown ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] HRESULT onkeydown ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] HRESULT onkeyup ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONKEYUP), propget, displaybind, bindable] HRESULT onkeyup ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] HRESULT onkeypress ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] HRESULT onkeypress ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT_ONMOUSEOUT), propput, displaybind, bindable] HRESULT onmouseout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] HRESULT onmouseout ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] HRESULT onmouseover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] HRESULT onmouseover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] HRESULT onmousemove ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] HRESULT onmousemove ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] HRESULT onmousedown ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] HRESULT onmousedown ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] HRESULT onmouseup ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] HRESULT onmouseup ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] HRESULT document ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] HRESULT title ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] HRESULT title ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] HRESULT language ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] HRESULT language ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] HRESULT onselectstart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] HRESULT onselectstart ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] HRESULT scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] HRESULT contains ([in] IHTMLElement *pChild,[retval, out] VARIANT_BOOL *pfResult);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] HRESULT sourceIndex ([retval, out] long *p);
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] HRESULT recordNumber ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_LANG)] HRESULT lang ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] HRESULT lang ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] HRESULT offsetLeft ([retval, out] long *p);
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] HRESULT offsetTop ([retval, out] long *p);
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] HRESULT offsetWidth ([retval, out] long *p);
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] HRESULT offsetHeight ([retval, out] long *p);
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] HRESULT offsetParent ([retval, out] IHTMLElement **p);
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] HRESULT innerHTML ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] HRESULT innerHTML ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] HRESULT innerText ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] HRESULT innerText ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] HRESULT outerHTML ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] HRESULT outerHTML ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] HRESULT outerText ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] HRESULT outerText ([retval, out] BSTR *p);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] HRESULT insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] HRESULT insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT), propget] HRESULT parentTextEdit ([retval, out] IHTMLElement **p);
    [id (DISPID_IHTMLELEMENT_ISTEXTEDIT), propget] HRESULT isTextEdit ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLELEMENT_CLICK)] HRESULT click ();
    [id (DISPID_IHTMLELEMENT_FILTERS), propget] HRESULT filters ([retval, out] IHTMLFiltersCollection **p);
    [id (DISPID_IHTMLELEMENT_ONDRAGSTART), propput, displaybind, bindable] HRESULT ondragstart ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDRAGSTART), propget, displaybind, bindable] HRESULT ondragstart ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT_TOSTRING)] HRESULT toString ([retval, out] BSTR *String);
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] HRESULT onbeforeupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] HRESULT onbeforeupdate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] HRESULT onafterupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] HRESULT onafterupdate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] HRESULT onerrorupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] HRESULT onerrorupdate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] HRESULT onrowexit ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] HRESULT onrowexit ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] HRESULT onrowenter ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] HRESULT onrowenter ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] HRESULT ondatasetchanged ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), propget, displaybind, bindable] HRESULT ondatasetchanged ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] HRESULT ondataavailable ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), propget, displaybind, bindable] HRESULT ondataavailable ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] HRESULT ondatasetcomplete ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), propget, displaybind, bindable] HRESULT ondatasetcomplete ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] HRESULT onfilterchange ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), propget, displaybind, bindable] HRESULT onfilterchange ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT_CHILDREN), propget] HRESULT children ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLELEMENT_ALL), propget] HRESULT all ([retval, out] IDispatch **p);
  };

  [odl, oleautomation, dual, uuid (3050f434-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLElement2 : IDispatch {
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] HRESULT scopeName ([retval, out] BSTR *p);
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] HRESULT setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] HRESULT releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] HRESULT onlosecapture ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] HRESULT onlosecapture ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] HRESULT componentFromPoint ([in] long x,[in] long y,[retval, out] BSTR *component);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] HRESULT doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] HRESULT onscroll ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] HRESULT onscroll ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] HRESULT ondrag ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] HRESULT ondrag ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] HRESULT ondragend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] HRESULT ondragend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] HRESULT ondragenter ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] HRESULT ondragenter ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] HRESULT ondragover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] HRESULT ondragover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] HRESULT ondragleave ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] HRESULT ondragleave ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] HRESULT ondrop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] HRESULT ondrop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] HRESULT onbeforecut ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] HRESULT onbeforecut ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] HRESULT oncut ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] HRESULT oncut ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] HRESULT onbeforecopy ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] HRESULT onbeforecopy ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] HRESULT oncopy ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] HRESULT oncopy ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] HRESULT onbeforepaste ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] HRESULT onbeforepaste ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] HRESULT onpaste ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] HRESULT onpaste ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] HRESULT currentStyle ([retval, out] IHTMLCurrentStyle **p);
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] HRESULT onpropertychange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] HRESULT onpropertychange ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] HRESULT getClientRects ([retval, out] IHTMLRectCollection **pRectCol);
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] HRESULT getBoundingClientRect ([retval, out] IHTMLRect **pRect);
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] HRESULT setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] HRESULT getExpression ([in] BSTR propname,[retval, out] VARIANT *expression);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] HRESULT removeExpression ([in] BSTR propname,[retval, out] VARIANT_BOOL *pfSuccess);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] HRESULT tabIndex ([in] short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] HRESULT tabIndex ([retval, out] short *p);
    [id (DISPID_IHTMLELEMENT2_FOCUS)] HRESULT focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] HRESULT accessKey ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] HRESULT accessKey ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] HRESULT onblur ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] HRESULT onblur ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] HRESULT onfocus ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] HRESULT onfocus ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] HRESULT onresize ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] HRESULT onresize ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT2_BLUR)] HRESULT blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] HRESULT addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] HRESULT removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] HRESULT clientHeight ([retval, out] long *p);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] HRESULT clientWidth ([retval, out] long *p);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] HRESULT clientTop ([retval, out] long *p);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] HRESULT clientLeft ([retval, out] long *p);
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] HRESULT attachEvent ([in] BSTR event,[in] IDispatch *pDisp,[retval, out] VARIANT_BOOL *pfResult);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] HRESULT detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] HRESULT readyState ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] HRESULT onrowsdelete ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] HRESULT onrowsdelete ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] HRESULT onrowsinserted ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] HRESULT onrowsinserted ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] HRESULT oncellchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] HRESULT oncellchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] HRESULT dir ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] HRESULT dir ([retval, out] BSTR *p);
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] HRESULT createControlRange ([retval, out] IDispatch **range);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] HRESULT scrollHeight ([retval, out] long *p);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] HRESULT scrollWidth ([retval, out] long *p);
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] HRESULT scrollTop ([in] long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] HRESULT scrollTop ([retval, out] long *p);
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] HRESULT scrollLeft ([in] long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] HRESULT scrollLeft ([retval, out] long *p);
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] HRESULT clearAttributes ();
    [id (DISPID_IHTMLELEMENT2_MERGEATTRIBUTES)] HRESULT mergeAttributes ([in] IHTMLElement *mergeThis);
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] HRESULT oncontextmenu ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] HRESULT oncontextmenu ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] HRESULT insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement,[retval, out] IHTMLElement **inserted);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] HRESULT applyElement ([in] IHTMLElement *apply,[in] BSTR where,[retval, out] IHTMLElement **applied);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] HRESULT getAdjacentText ([in] BSTR where,[retval, out] BSTR *text);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] HRESULT replaceAdjacentText ([in] BSTR where,[in] BSTR newText,[retval, out] BSTR *oldText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] HRESULT canHaveChildren ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] HRESULT addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory,[retval, out] long *pCookie);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] HRESULT removeBehavior ([in] long cookie,[retval, out] VARIANT_BOOL *pfResult);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] HRESULT runtimeStyle ([retval, out] IHTMLStyle **p);
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] HRESULT behaviorUrns ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] HRESULT tagUrn ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] HRESULT tagUrn ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] HRESULT onbeforeeditfocus ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), propget, displaybind, bindable] HRESULT onbeforeeditfocus ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), propget, hidden, restricted] HRESULT readyStateValue ([retval, out] long *p);
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] HRESULT getElementsByTagName ([in] BSTR v,[retval, out] IHTMLElementCollection **pelColl);
  };

  [odl, oleautomation, dual, uuid (3050f673-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLElement3 : IDispatch {
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] HRESULT mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [id (DISPID_IHTMLELEMENT3_ISMULTILINE), propget] HRESULT isMultiLine ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLELEMENT3_CANHAVEHTML), propget] HRESULT canHaveHTML ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] HRESULT onlayoutcomplete ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), propget, displaybind, bindable] HRESULT onlayoutcomplete ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] HRESULT onpage ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] HRESULT onpage ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] HRESULT inflateBlock ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] HRESULT inflateBlock ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] HRESULT onbeforedeactivate ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), propget, displaybind, bindable] HRESULT onbeforedeactivate ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] HRESULT setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] HRESULT contentEditable ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] HRESULT contentEditable ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] HRESULT isContentEditable ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] HRESULT hideFocus ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] HRESULT hideFocus ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENT3_DISABLED), propget, displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLELEMENT3_ISDISABLED), propget] HRESULT isDisabled ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] HRESULT onmove ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT3_ONMOVE), propget, displaybind, bindable] HRESULT onmove ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] HRESULT oncontrolselect ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), propget, displaybind, bindable] HRESULT oncontrolselect ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] HRESULT fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject,[retval, out] VARIANT_BOOL *pfCancelled);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] HRESULT onresizestart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] HRESULT onresizestart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] HRESULT onresizeend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] HRESULT onresizeend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] HRESULT onmovestart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] HRESULT onmovestart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] HRESULT onmoveend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] HRESULT onmoveend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] HRESULT onmouseenter ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] HRESULT onmouseenter ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] HRESULT onmouseleave ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] HRESULT onmouseleave ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] HRESULT onactivate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] HRESULT onactivate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] HRESULT ondeactivate ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), propget, displaybind, bindable] HRESULT ondeactivate ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] HRESULT dragDrop ([retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLELEMENT3_GLYPHMODE), propget, hidden, restricted, nonbrowsable] HRESULT glyphMode ([retval, out] LONG *p);
  };

  [odl, oleautomation, dual, uuid (3050f80f-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLElement4 : IDispatch {
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] HRESULT onmousewheel ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), propget, displaybind, bindable] HRESULT onmousewheel ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] HRESULT normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] HRESULT getAttributeNode ([in] BSTR bstrname,[retval, out] IHTMLDOMAttribute **ppAttribute);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] HRESULT setAttributeNode ([in] IHTMLDOMAttribute *pattr,[retval, out] IHTMLDOMAttribute **ppretAttribute);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] HRESULT removeAttributeNode ([in] IHTMLDOMAttribute *pattr,[retval, out] IHTMLDOMAttribute **ppretAttribute);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] HRESULT onbeforeactivate ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), propget, displaybind, bindable] HRESULT onbeforeactivate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] HRESULT onfocusin ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT4_ONFOCUSIN), propget, displaybind, bindable] HRESULT onfocusin ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] HRESULT onfocusout ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), propget, displaybind, bindable] HRESULT onfocusout ([retval, out] VARIANT *p);
  };

  [odl, oleautomation, dual, uuid (30510463-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementSelector : IDispatch {
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] HRESULT querySelector ([in] BSTR v,[retval, out] IHTMLElement **pel);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] HRESULT querySelectorAll ([in] BSTR v,[retval, out] IHTMLDOMChildrenCollection **pel);
  };

  [object, pointer_default (unique), uuid (3050f669-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLElementRender : IUnknown {
    HRESULT DrawToDC ([in] HDC hDC);
    HRESULT SetDocumentPrinter ([in] BSTR bstrPrinterName,[in] HDC hDC);
  };

  [odl, oleautomation, dual, uuid (3050f4d0-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLUniqueName : IDispatch {
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] HRESULT uniqueNumber ([retval, out] long *p);
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] HRESULT uniqueID ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (3051045d-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLElement5 : IDispatch {
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] HRESULT getAttributeNode ([in] BSTR bstrname,[retval, out] IHTMLDOMAttribute2 **ppretAttribute);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] HRESULT setAttributeNode ([in] IHTMLDOMAttribute2 *pattr,[retval, out] IHTMLDOMAttribute2 **ppretAttribute);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] HRESULT removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr,[retval, out] IHTMLDOMAttribute2 **ppretAttribute);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] HRESULT hasAttribute ([in] BSTR name,[retval, out] VARIANT_BOOL *pfHasAttribute);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] HRESULT role ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] HRESULT role ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] HRESULT ariaBusy ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] HRESULT ariaBusy ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] HRESULT ariaChecked ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] HRESULT ariaChecked ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] HRESULT ariaDisabled ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] HRESULT ariaDisabled ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] HRESULT ariaExpanded ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] HRESULT ariaExpanded ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] HRESULT ariaHaspopup ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] HRESULT ariaHaspopup ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] HRESULT ariaHidden ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] HRESULT ariaHidden ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] HRESULT ariaInvalid ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] HRESULT ariaInvalid ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] HRESULT ariaMultiselectable ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] HRESULT ariaMultiselectable ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] HRESULT ariaPressed ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] HRESULT ariaPressed ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] HRESULT ariaReadonly ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] HRESULT ariaReadonly ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] HRESULT ariaRequired ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] HRESULT ariaRequired ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] HRESULT ariaSecret ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] HRESULT ariaSecret ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] HRESULT ariaSelected ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] HRESULT ariaSelected ([retval, out] BSTR *p);
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] HRESULT getAttribute ([in] BSTR strAttributeName,[retval, out] VARIANT *AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] HRESULT setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] HRESULT removeAttribute ([in] BSTR strAttributeName,[retval, out] VARIANT_BOOL *pfSuccess);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] HRESULT attributes ([retval, out] IHTMLAttributeCollection3 **p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] HRESULT ariaValuenow ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] HRESULT ariaValuenow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] HRESULT ariaPosinset ([in] short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] HRESULT ariaPosinset ([retval, out] short *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] HRESULT ariaSetsize ([in] short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] HRESULT ariaSetsize ([retval, out] short *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] HRESULT ariaLevel ([in] short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] HRESULT ariaLevel ([retval, out] short *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] HRESULT ariaValuemin ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] HRESULT ariaValuemin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] HRESULT ariaValuemax ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] HRESULT ariaValuemax ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] HRESULT ariaControls ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] HRESULT ariaControls ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] HRESULT ariaDescribedby ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), propget, displaybind, bindable] HRESULT ariaDescribedby ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] HRESULT ariaFlowto ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] HRESULT ariaFlowto ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] HRESULT ariaLabelledby ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] HRESULT ariaLabelledby ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] HRESULT ariaActivedescendant ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] HRESULT ariaActivedescendant ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] HRESULT ariaOwns ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] HRESULT ariaOwns ([retval, out] BSTR *p);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] HRESULT hasAttributes ([retval, out] VARIANT_BOOL *pfHasAttributes);
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] HRESULT ariaLive ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT5_ARIALIVE), propget, displaybind, bindable] HRESULT ariaLive ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] HRESULT ariaRelevant ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT5_ARIARELEVANT), propget, displaybind, bindable] HRESULT ariaRelevant ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (305106f8-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLElement6 : IDispatch {
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] HRESULT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[retval, out] VARIANT *AttributeValue);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] HRESULT setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] HRESULT removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] HRESULT getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname,[retval, out] IHTMLDOMAttribute2 **ppretAttribute);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] HRESULT setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr,[retval, out] IHTMLDOMAttribute2 **ppretAttribute);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] HRESULT hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name,[retval, out] VARIANT_BOOL *pfHasAttribute);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] HRESULT getAttribute ([in] BSTR strAttributeName,[retval, out] VARIANT *AttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] HRESULT setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] HRESULT removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] HRESULT getAttributeNode ([in] BSTR strAttributeName,[retval, out] IHTMLDOMAttribute2 **ppretAttribute);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] HRESULT setAttributeNode ([in] IHTMLDOMAttribute2 *pattr,[retval, out] IHTMLDOMAttribute2 **ppretAttribute);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] HRESULT removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr,[retval, out] IHTMLDOMAttribute2 **ppretAttribute);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] HRESULT hasAttribute ([in] BSTR name,[retval, out] VARIANT_BOOL *pfHasAttribute);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] HRESULT getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName,[retval, out] IHTMLElementCollection **pelColl);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] HRESULT tagName ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] HRESULT nodeName ([retval, out] BSTR *p);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] HRESULT getElementsByClassName ([in] BSTR v,[retval, out] IHTMLElementCollection **pel);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] HRESULT msMatchesSelector ([in] BSTR v,[retval, out] VARIANT_BOOL *pfMatches);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] HRESULT onabort ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] HRESULT onabort ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] HRESULT oncanplay ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] HRESULT oncanplay ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] HRESULT oncanplaythrough ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] HRESULT oncanplaythrough ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] HRESULT onchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] HRESULT onchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] HRESULT ondurationchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] HRESULT ondurationchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] HRESULT onemptied ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] HRESULT onemptied ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] HRESULT onended ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] HRESULT onended ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] HRESULT onerror ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] HRESULT oninput ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] HRESULT oninput ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] HRESULT onloadeddata ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] HRESULT onloadeddata ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] HRESULT onloadedmetadata ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] HRESULT onloadedmetadata ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] HRESULT onloadstart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] HRESULT onloadstart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] HRESULT onpause ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] HRESULT onpause ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] HRESULT onplay ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] HRESULT onplay ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] HRESULT onplaying ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] HRESULT onplaying ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] HRESULT onprogress ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] HRESULT onprogress ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] HRESULT onratechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] HRESULT onratechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] HRESULT onreset ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] HRESULT onreset ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] HRESULT onseeked ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] HRESULT onseeked ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] HRESULT onseeking ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] HRESULT onseeking ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] HRESULT onselect ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] HRESULT onselect ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] HRESULT onstalled ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] HRESULT onstalled ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] HRESULT onsubmit ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] HRESULT onsubmit ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] HRESULT onsuspend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] HRESULT onsuspend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] HRESULT ontimeupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] HRESULT ontimeupdate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] HRESULT onvolumechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] HRESULT onvolumechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] HRESULT onwaiting ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] HRESULT onwaiting ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] HRESULT hasAttributes ([retval, out] VARIANT_BOOL *pfHasAttributes);
  };

  [odl, oleautomation, dual, uuid (305107aa-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLElement7 : IDispatch {
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] HRESULT onmspointerdown ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] HRESULT onmspointerdown ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] HRESULT onmspointermove ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] HRESULT onmspointermove ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] HRESULT onmspointerup ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] HRESULT onmspointerup ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] HRESULT onmspointerover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] HRESULT onmspointerover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] HRESULT onmspointerout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] HRESULT onmspointerout ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] HRESULT onmspointercancel ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] HRESULT onmspointercancel ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] HRESULT onmspointerhover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] HRESULT onmspointerhover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] HRESULT onmslostpointercapture ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] HRESULT onmslostpointercapture ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] HRESULT onmsgotpointercapture ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] HRESULT onmsgotpointercapture ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] HRESULT onmsgesturestart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] HRESULT onmsgesturestart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] HRESULT onmsgesturechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] HRESULT onmsgesturechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] HRESULT onmsgestureend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] HRESULT onmsgestureend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] HRESULT onmsgesturehold ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] HRESULT onmsgesturehold ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] HRESULT onmsgesturetap ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] HRESULT onmsgesturetap ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] HRESULT onmsgesturedoubletap ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] HRESULT onmsgesturedoubletap ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] HRESULT onmsinertiastart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] HRESULT onmsinertiastart ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] HRESULT msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] HRESULT msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] HRESULT onmstransitionstart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] HRESULT onmstransitionstart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] HRESULT onmstransitionend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] HRESULT onmstransitionend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] HRESULT onmsanimationstart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] HRESULT onmsanimationstart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] HRESULT onmsanimationend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] HRESULT onmsanimationend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] HRESULT onmsanimationiteration ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] HRESULT onmsanimationiteration ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] HRESULT oninvalid ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] HRESULT oninvalid ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] HRESULT xmsAcceleratorKey ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] HRESULT xmsAcceleratorKey ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] HRESULT spellcheck ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] HRESULT spellcheck ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] HRESULT onmsmanipulationstatechanged ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] HRESULT onmsmanipulationstatechanged ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] HRESULT oncuechange ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT7_ONCUECHANGE), propget, displaybind, bindable, hidden] HRESULT oncuechange ([retval, out] VARIANT *p);
  };

  [odl, oleautomation, dual, uuid (305104bd-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLElementAppliedStyles : IDispatch {
    [id (DISPID_IHTMLELEMENTAPPLIEDSTYLES_MSGETRULESAPPLIED)] HRESULT msGetRulesApplied ([retval, out] IRulesAppliedCollection **ppRulesAppliedCollection);
    [id (DISPID_IHTMLELEMENTAPPLIEDSTYLES_MSGETRULESAPPLIEDWITHANCESTOR)] HRESULT msGetRulesAppliedWithAncestor ([optional, in] VARIANT varContext,[retval, out] IRulesAppliedCollection **ppRulesAppliedCollection);
  };
  
  [odl, oleautomation, dual, uuid (30510736-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementTraversal : IDispatch {
    [id (DISPID_IELEMENTTRAVERSAL_FIRSTELEMENTCHILD), propget] HRESULT firstElementChild ([retval, out] IHTMLElement **p);
    [id (DISPID_IELEMENTTRAVERSAL_LASTELEMENTCHILD), propget] HRESULT lastElementChild ([retval, out] IHTMLElement **p);
    [id (DISPID_IELEMENTTRAVERSAL_PREVIOUSELEMENTSIBLING), propget] HRESULT previousElementSibling ([retval, out] IHTMLElement **p);
    [id (DISPID_IELEMENTTRAVERSAL_NEXTELEMENTSIBLING), propget] HRESULT nextElementSibling ([retval, out] IHTMLElement **p);
    [id (DISPID_IELEMENTTRAVERSAL_CHILDELEMENTCOUNT), propget] HRESULT childElementCount ([retval, out] long *p);
  };

  [odl, oleautomation, dual, uuid (3050f3f2-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLDatabinding : IDispatch {
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] HRESULT dataFld ([in] BSTR v);
    [id (DISPID_IHTMLDATABINDING_DATAFLD), propget] HRESULT dataFld ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] HRESULT dataSrc ([in] BSTR v);
    [id (DISPID_IHTMLDATABINDING_DATASRC), propget] HRESULT dataSrc ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] HRESULT dataFormatAs ([in] BSTR v);
    [id (DISPID_IHTMLDATABINDING_DATAFORMATAS), propget] HRESULT dataFormatAs ([retval, out] BSTR *p);
  };

  interface IHTMLDocument;

  [odl, oleautomation, dual, uuid (3050f6c9-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLElementDefaults : IDispatch {
    [id (DISPID_IHTMLELEMENTDEFAULTS_STYLE), propget, nonbrowsable] HRESULT style ([retval, out] IHTMLStyle **p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_TABSTOP)] HRESULT tabStop ([in] VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_TABSTOP), propget] HRESULT tabStop ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_VIEWINHERITSTYLE)] HRESULT viewInheritStyle ([in] VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_VIEWINHERITSTYLE), propget] HRESULT viewInheritStyle ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_VIEWMASTERTAB)] HRESULT viewMasterTab ([in] VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_VIEWMASTERTAB), propget] HRESULT viewMasterTab ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_SCROLLSEGMENTX), displaybind, bindable] HRESULT scrollSegmentX ([in] long v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_SCROLLSEGMENTX), propget, displaybind, bindable] HRESULT scrollSegmentX ([retval, out] long *p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_SCROLLSEGMENTY), displaybind, bindable] HRESULT scrollSegmentY ([in] long v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_SCROLLSEGMENTY), propget, displaybind, bindable] HRESULT scrollSegmentY ([retval, out] long *p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_ISMULTILINE)] HRESULT isMultiLine ([in] VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_ISMULTILINE), propget] HRESULT isMultiLine ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_CONTENTEDITABLE)] HRESULT contentEditable ([in] BSTR v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_CONTENTEDITABLE), propget] HRESULT contentEditable ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_CANHAVEHTML)] HRESULT canHaveHTML ([in] VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_CANHAVEHTML), propget] HRESULT canHaveHTML ([retval, out] VARIANT_BOOL *p);
    [propputref, id (DISPID_IHTMLELEMENTDEFAULTS_VIEWLINK)] HRESULT viewLink ([in] IHTMLDocument *v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_VIEWLINK), propget] HRESULT viewLink ([retval, out] IHTMLDocument **p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_FROZEN)] HRESULT frozen ([in] VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_FROZEN), propget] HRESULT frozen ([retval, out] VARIANT_BOOL *p);
  };

  [hidden, uuid (3050f58c-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLDefaults {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENTDEFAULTS_STYLE), propget, nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_TABSTOP)] void tabStop (VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_TABSTOP), propget] VARIANT_BOOL tabStop ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_VIEWINHERITSTYLE)] void viewInheritStyle (VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_VIEWINHERITSTYLE), propget] VARIANT_BOOL viewInheritStyle ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_VIEWMASTERTAB)] void viewMasterTab (VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_VIEWMASTERTAB), propget] VARIANT_BOOL viewMasterTab ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_SCROLLSEGMENTX), displaybind, bindable] void scrollSegmentX (long v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_SCROLLSEGMENTX), propget, displaybind, bindable] long scrollSegmentX ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_SCROLLSEGMENTY), displaybind, bindable] void scrollSegmentY (long v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_SCROLLSEGMENTY), propget, displaybind, bindable] long scrollSegmentY ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_ISMULTILINE)] void isMultiLine (VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_ISMULTILINE), propget] VARIANT_BOOL isMultiLine ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_CONTENTEDITABLE)] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENTDEFAULTS_CONTENTEDITABLE)] BSTR contentEditable ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_CANHAVEHTML)] void canHaveHTML (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENTDEFAULTS_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propputref, id (DISPID_IHTMLELEMENTDEFAULTS_VIEWLINK)] void viewLink (IHTMLDocument *v);
    [propget, id (DISPID_IHTMLELEMENTDEFAULTS_VIEWLINK)] IHTMLDocument *viewLink ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_FROZEN)] void frozen (VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_FROZEN), propget] VARIANT_BOOL frozen ();
    [id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), propget, hidden] IDispatch *constructor ();
  };

  [noncreatable, uuid (3050f6c8-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLDefaults {
    [default] dispinterface DispHTMLDefaults;
    interface IHTMLElementDefaults;
    interface IHTMLDOMConstructor;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CDefaults;")
  interface IHTMLEventObj;

  [odl, oleautomation, dual, uuid (3050f4fd-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTCDefaultDispatch : IDispatch {
    [id (DISPID_IHTCDEFAULTDISPATCH_ELEMENT), propget] HRESULT element ([retval, out] IHTMLElement **p);
    [id (DISPID_IHTCDEFAULTDISPATCH_CREATEEVENTOBJECT)] HRESULT createEventObject ([retval, out] IHTMLEventObj **eventObj);
    [id (DISPID_IHTCDEFAULTDISPATCH_DEFAULTS), propget] HRESULT defaults ([retval, out] IDispatch **p);
    [id (DISPID_IHTCDEFAULTDISPATCH_DOCUMENT), propget] HRESULT document ([retval, out] IDispatch **p);
  };

  [odl, oleautomation, dual, uuid (3050f5df-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTCPropertyBehavior : IDispatch {
    [id (DISPID_IHTCPROPERTYBEHAVIOR_FIRECHANGE)] HRESULT fireChange ();
    [propput, id (DISPID_IHTCPROPERTYBEHAVIOR_VALUE)] HRESULT value ([in] VARIANT v);
    [id (DISPID_IHTCPROPERTYBEHAVIOR_VALUE), propget] HRESULT value ([retval, out] VARIANT *p);
  };

  [odl, oleautomation, dual, uuid (3050f631-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTCMethodBehavior : IDispatch {
  };

  [odl, oleautomation, dual, uuid (3050f4ff-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTCEventBehavior : IDispatch {
    [id (DISPID_IHTCEVENTBEHAVIOR_FIRE)] HRESULT fire ([in] IHTMLEventObj *pvar);
  };

  [odl, oleautomation, dual, uuid (3050f5f4-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTCAttachBehavior : IDispatch {
    [id (DISPID_IHTCATTACHBEHAVIOR_FIREEVENT)] HRESULT fireEvent ([in] IDispatch *evt);
    [id (DISPID_IHTCATTACHBEHAVIOR_DETACHEVENT)] HRESULT detachEvent ();
  };

  [odl, oleautomation, dual, uuid (3050f7eb-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTCAttachBehavior2 : IDispatch {
    [id (DISPID_IHTCATTACHBEHAVIOR2_FIREEVENT)] HRESULT fireEvent ([in] VARIANT evt);
  };

  [odl, oleautomation, dual, uuid (3050f5dc-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTCDescBehavior : IDispatch {
    [id (DISPID_IHTCDESCBEHAVIOR_URN), propget, bindable] HRESULT urn ([retval, out] BSTR *p);
    [id (DISPID_IHTCDESCBEHAVIOR_NAME), propget, bindable] HRESULT name ([retval, out] BSTR *p);
  };

  [hidden, uuid (3050f573-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTCDefaultDispatch {
    properties:
    methods:
    [id (DISPID_IHTCDEFAULTDISPATCH_ELEMENT), propget] IHTMLElement *element ();
    [id (DISPID_IHTCDEFAULTDISPATCH_CREATEEVENTOBJECT)] IHTMLEventObj *createEventObject ();
    [id (DISPID_IHTCDEFAULTDISPATCH_DEFAULTS), propget] IDispatch *defaults ();
    [id (DISPID_IHTCDEFAULTDISPATCH_DOCUMENT), propget] IDispatch *document ();
  };

  [noncreatable, uuid (3050f4fc-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTCDefaultDispatch {
    [default] dispinterface DispHTCDefaultDispatch;
    interface IHTCDefaultDispatch;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CHtmlComponentDD;")

  [hidden, uuid (3050f57f-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTCPropertyBehavior {
    properties:
    methods:
    [id (DISPID_IHTCPROPERTYBEHAVIOR_FIRECHANGE)] void fireChange ();
    [propput, id (DISPID_IHTCPROPERTYBEHAVIOR_VALUE)] void value (VARIANT v);
    [id (DISPID_IHTCPROPERTYBEHAVIOR_VALUE), propget] VARIANT value ();
  };

  [noncreatable, uuid (3050f5de-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTCPropertyBehavior {
    [default] dispinterface DispHTCPropertyBehavior;
    interface IHTCPropertyBehavior;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CHtmlComponentProperty;")

  [hidden, uuid (3050f587-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTCMethodBehavior {
    properties:
    methods:
  };
  
  [noncreatable, uuid (3050f630-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTCMethodBehavior {
    [default] dispinterface DispHTCMethodBehavior;
    interface IHTCMethodBehavior;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CHtmlComponentMethod;")

  [hidden, uuid (3050f574-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTCEventBehavior {
    properties:
    methods:
    [id (DISPID_IHTCEVENTBEHAVIOR_FIRE)] void fire ([in] IHTMLEventObj *pvar);
  };

  [noncreatable, uuid (3050f4fe-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTCEventBehavior {
    [default] dispinterface DispHTCEventBehavior;
    interface IHTCEventBehavior;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CHtmlComponentEvent;")

  [hidden, uuid (3050f583-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTCAttachBehavior {
    properties:
    methods:
    [id (DISPID_IHTCATTACHBEHAVIOR2_FIREEVENT)] void fireEvent ([in] VARIANT evt);
    [id (DISPID_IHTCATTACHBEHAVIOR_DETACHEVENT)] void detachEvent ();
  };

  [noncreatable, uuid (3050f5f5-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTCAttachBehavior {
    [default] dispinterface DispHTCAttachBehavior;
    interface IHTCAttachBehavior2;
    interface IHTCAttachBehavior;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CHtmlComponentAttach;")

  [hidden, uuid (3050f57e-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTCDescBehavior {
    properties:
    methods:
    [id (DISPID_IHTCDESCBEHAVIOR_URN), propget, bindable] BSTR urn ();
    [id (DISPID_IHTCDESCBEHAVIOR_NAME), propget, bindable] BSTR name ();
  };

  [noncreatable, uuid (3050f5dd-98b5-11cf-bb82-00aa00bdce0b)] coclass HTCDescBehavior {
    [default] dispinterface DispHTCDescBehavior;
    interface IHTCDescBehavior;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CHtmlComponentDesc;")

  [odl, oleautomation, dual, uuid (3050f5e2-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLUrnCollection : IDispatch {
    [id (DISPID_IHTMLURNCOLLECTION_LENGTH), propget] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLURNCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] BSTR *ppUrn);
  };

  [hidden, uuid (3050f551-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLUrnCollection {
    properties:
    methods:
    [id (DISPID_IHTMLURNCOLLECTION_LENGTH), propget] long length ();
    [id (DISPID_IHTMLURNCOLLECTION_ITEM)] BSTR item ([in] long index);
    [id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), propget, hidden] IDispatch *constructor ();
  };

  [noncreatable, uuid (3050f580-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLUrnCollection {
    [default] dispinterface DispHTMLUrnCollection;
    interface IHTMLUrnCollection;
    interface IHTMLDOMConstructor;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CPeerUrnCollection;")

  [odl, oleautomation, dual, uuid (3050f4b7-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLGenericElement : IDispatch {
    [id (DISPID_IHTMLGENERICELEMENT_RECORDSET), propget, hidden] HRESULT recordset ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLGENERICELEMENT_NAMEDRECORDSET)] HRESULT namedRecordset ([in] BSTR dataMember,[optional, in] VARIANT *hierarchy,[retval, out] IDispatch **ppRecordset);
  };

  [hidden, uuid (3050f563-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLGenericElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [id (DISPID_IHTMLELEMENT_CLASSNAME), propget, bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [id (DISPID_IHTMLELEMENT_ID), propget, bindable] BSTR id ();
    [id (DISPID_IHTMLELEMENT_TAGNAME), propget] BSTR tagName ();
    [id (DISPID_IHTMLELEMENT_PARENTELEMENT), propget] IHTMLElement *parentElement ();
    [id (DISPID_IHTMLELEMENT_STYLE), propget, nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONHELP), propget, displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONCLICK), propget, displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDBLCLICK), propget, displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONKEYDOWN), propget, displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONKEYUP), propget, displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), propget, displaybind, bindable] VARIANT onfilterchange ();
    [id (DISPID_IHTMLELEMENT_CHILDREN), propget] IDispatch *children ();
    [id (DISPID_IHTMLELEMENT_ALL), propget] IDispatch *all ();
    [id (DISPID_IHTMLELEMENT2_SCOPENAME), propget] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), propget, displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), propget, displaybind, bindable] long clientHeight ();
    [id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), propget, displaybind, bindable] long clientWidth ();
    [id (DISPID_IHTMLELEMENT2_CLIENTTOP), propget, displaybind, bindable] long clientTop ();
    [id (DISPID_IHTMLELEMENT2_CLIENTLEFT), propget, displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_READYSTATE), propget] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [id (DISPID_IHTMLELEMENT7_ONCUECHANGE), propget, displaybind, bindable, hidden] VARIANT oncuechange ();
    [id (DISPID_IHTMLGENERICELEMENT_RECORDSET), propget, hidden] IDispatch *recordset ();
    [id (DISPID_IHTMLGENERICELEMENT_NAMEDRECORDSET)] IDispatch *namedRecordset ([in] BSTR dataMember,[optional, in] VARIANT *hierarchy);
  };

  [noncreatable, uuid (3050f4b8-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLGenericElement {
    [default] dispinterface DispHTMLGenericElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLGenericElement;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CGenericElement;")

  [odl, oleautomation, dual, uuid (3050f357-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLStyleSheetRule : IDispatch {
    [propput, id (DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)] HRESULT selectorText ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)] HRESULT selectorText ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLSTYLESHEETRULE_STYLE), nonbrowsable] HRESULT style ([retval, out] IHTMLRuleStyle **p);
    [propget, id (DISPID_IHTMLSTYLESHEETRULE_READONLY)] HRESULT readOnly ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (305104c1-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleSheetRuleApplied : IDispatch {
    [propget, id (DISPID_IHTMLSTYLESHEETRULEAPPLIED_MSSPECIFICITY), restricted] HRESULT msSpecificity ([retval, out] long *p);
    [id (DISPID_IHTMLSTYLESHEETRULEAPPLIED_MSGETSPECIFICITY)] HRESULT msGetSpecificity ([in] long index,[retval, out] long *p);
  };

  [odl, oleautomation, dual, uuid (305106fd-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLStyleSheetRule2 : IDispatch {
    [propput, id (DISPID_IHTMLSTYLESHEETRULE2_IE9_SELECTORTEXT)] HRESULT selectorText ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEETRULE2_IE9_SELECTORTEXT)] HRESULT selectorText ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (3050f2e5-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLStyleSheetRulesCollection : IDispatch {
    [propget, id (DISPID_IHTMLSTYLESHEETRULESCOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLSTYLESHEETRULESCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] IHTMLStyleSheetRule **ppHTMLStyleSheetRule);
  };

  [odl, oleautomation, dual, uuid (305106e8-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLStyleSheetRulesCollection2 : IDispatch {
    [propget, id (DISPID_IHTMLSTYLESHEETRULESCOLLECTION2_IE9_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLSTYLESHEETRULESCOLLECTION2_IE9_ITEM)] HRESULT item ([in] long index,[retval, out] IHTMLCSSRule **ppHTMLCSSRule);
  };

  [hidden, uuid (3050f50e-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLStyleSheetRule {
    properties:
    methods:
    [propget, id (DISPID_IHTMLCSSRULE_TYPE)] USHORT type ();
    [propput, id (DISPID_IHTMLCSSRULE_CSSTEXT)] void cssText (BSTR v);
    [propget, id (DISPID_IHTMLCSSRULE_CSSTEXT)] BSTR cssText ();
    [propget, id (DISPID_IHTMLCSSRULE_PARENTRULE)] IHTMLCSSRule *parentRule ();
    [propget, id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET)] IHTMLStyleSheet *parentStyleSheet ();
    [propput, id (DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)] void selectorText (BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)] BSTR selectorText ();
    [propget, id (DISPID_IHTMLSTYLESHEETRULE_STYLE), nonbrowsable] IHTMLRuleStyle *style ();
    [propget, id (DISPID_IHTMLSTYLESHEETRULE_READONLY)] VARIANT_BOOL readOnly ();
    [propput, id (DISPID_IHTMLSTYLESHEETRULE2_IE9_SELECTORTEXT)] void ie9_selectorText (BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEETRULE2_IE9_SELECTORTEXT)] BSTR ie9_selectorText ();
    [propget, id (DISPID_IHTMLSTYLESHEETRULEAPPLIED_MSSPECIFICITY), restricted] long msSpecificity ();
    [id (DISPID_IHTMLSTYLESHEETRULEAPPLIED_MSGETSPECIFICITY)] long msGetSpecificity ([in] long index);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };

  [noncreatable, uuid (3050f3ce-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLStyleSheetRule {
    [default] dispinterface DispHTMLStyleSheetRule;
    interface IHTMLCSSRule;
    interface IHTMLStyleSheetRule;
    interface IHTMLStyleSheetRule2;
    interface IHTMLStyleSheetRuleApplied;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStyleSheetRule;")
  [hidden, uuid (3050f52f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLStyleSheetRulesCollection {
    properties:
    methods:
    [propget, id (DISPID_IHTMLSTYLESHEETRULESCOLLECTION_LENGTH)] long length ();
    [id (DISPID_IHTMLSTYLESHEETRULESCOLLECTION_ITEM)] IHTMLStyleSheetRule *item ([in] long index);
    [propget, id (DISPID_IHTMLSTYLESHEETRULESCOLLECTION2_IE9_LENGTH)] long ie9_length ();
    [id (DISPID_IHTMLSTYLESHEETRULESCOLLECTION2_IE9_ITEM)] IHTMLCSSRule *ie9_item ([in] long index);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f3cd-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStyleSheetRulesCollection {
    [default] dispinterface DispHTMLStyleSheetRulesCollection;
    interface IHTMLStyleSheetRulesCollection;
    interface IHTMLStyleSheetRulesCollection2;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStyleSheetRuleArray;")
  [odl, oleautomation, dual, uuid (3050f7ee-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleSheetPage : IDispatch {
    [propget, id (DISPID_IHTMLSTYLESHEETPAGE_SELECTOR)] HRESULT selector ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLSTYLESHEETPAGE_PSEUDOCLASS)] HRESULT pseudoClass ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305106ed-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleSheetPage2 : IDispatch {
    [propput, id (DISPID_IHTMLSTYLESHEETPAGE2_SELECTORTEXT)] HRESULT selectorText ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEETPAGE2_SELECTORTEXT)] HRESULT selectorText ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLSTYLESHEETPAGE2_STYLE), nonbrowsable] HRESULT style ([retval, out] IHTMLRuleStyle **p);
  };
  [odl, oleautomation, dual, uuid (3050f7f0-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleSheetPagesCollection : IDispatch {
    [propget, id (DISPID_IHTMLSTYLESHEETPAGESCOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLSTYLESHEETPAGESCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] IHTMLStyleSheetPage **ppHTMLStyleSheetPage);
  };
  [hidden, uuid (3050f540-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLStyleSheetPage {
    properties:
    methods:
    [propget, id (DISPID_IHTMLCSSRULE_TYPE)] USHORT type ();
    [propput, id (DISPID_IHTMLCSSRULE_CSSTEXT)] void cssText (BSTR v);
    [propget, id (DISPID_IHTMLCSSRULE_CSSTEXT)] BSTR cssText ();
    [propget, id (DISPID_IHTMLCSSRULE_PARENTRULE)] IHTMLCSSRule *parentRule ();
    [propget, id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET)] IHTMLStyleSheet *parentStyleSheet ();
    [propget, id (DISPID_IHTMLSTYLESHEETPAGE_SELECTOR)] BSTR selector ();
    [propget, id (DISPID_IHTMLSTYLESHEETPAGE_PSEUDOCLASS)] BSTR pseudoClass ();
    [propput, id (DISPID_IHTMLSTYLESHEETPAGE2_SELECTORTEXT)] void selectorText (BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEETPAGE2_SELECTORTEXT)] BSTR selectorText ();
    [propget, id (DISPID_IHTMLSTYLESHEETPAGE2_STYLE), nonbrowsable] IHTMLRuleStyle *style ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f7ef-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStyleSheetPage {
    [default] dispinterface DispHTMLStyleSheetPage;
    interface IHTMLCSSRule;
    interface IHTMLStyleSheetPage;
    interface IHTMLStyleSheetPage2;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStyleSheetPage;")
  [hidden, uuid (3050f543-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLStyleSheetPagesCollection {
    properties:
    methods:
    [propget, id (DISPID_IHTMLSTYLESHEETPAGESCOLLECTION_LENGTH)] long length ();
    [id (DISPID_IHTMLSTYLESHEETPAGESCOLLECTION_ITEM)] IHTMLStyleSheetPage *item ([in] long index);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f7f1-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStyleSheetPagesCollection {
    [default] dispinterface DispHTMLStyleSheetPagesCollection;
    interface IHTMLStyleSheetPagesCollection;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStyleSheetPageArray;")
  interface IHTMLStyleSheetsCollection;
  [odl, oleautomation, dual, uuid (3050f2e3-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleSheet : IDispatch {
    [propput, id (DISPID_IHTMLSTYLESHEET_TITLE)] HRESULT title ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEET_TITLE)] HRESULT title ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLSTYLESHEET_PARENTSTYLESHEET)] HRESULT parentStyleSheet ([retval, out] IHTMLStyleSheet **p);
    [propget, id (DISPID_IHTMLSTYLESHEET_OWNINGELEMENT)] HRESULT owningElement ([retval, out] IHTMLElement **p);
    [propput, id (DISPID_IHTMLSTYLESHEET_DISABLED)] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLESHEET_DISABLED)] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLSTYLESHEET_READONLY)] HRESULT readOnly ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLSTYLESHEET_IMPORTS)] HRESULT imports ([retval, out] IHTMLStyleSheetsCollection **p);
    [propput, id (DISPID_IHTMLSTYLESHEET_HREF)] HRESULT href ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEET_HREF)] HRESULT href ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLSTYLESHEET_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLSTYLESHEET_ID)] HRESULT id ([retval, out] BSTR *p);
    [id (DISPID_IHTMLSTYLESHEET_ADDIMPORT)] HRESULT addImport ([in] BSTR bstrURL,[defaultvalue (-1), in] long lIndex,[defaultvalue (0), retval, out] long *plIndex);
    [id (DISPID_IHTMLSTYLESHEET_ADDRULE)] HRESULT addRule ([in] BSTR bstrSelector,[in] BSTR bstrStyle,[defaultvalue (-1), in] long lIndex,[defaultvalue (0), retval, out] long *plNewIndex);
    [id (DISPID_IHTMLSTYLESHEET_REMOVEIMPORT)] HRESULT removeImport ([in] long lIndex);
    [id (DISPID_IHTMLSTYLESHEET_REMOVERULE)] HRESULT removeRule ([in] long lIndex);
    [propput, id (DISPID_IHTMLSTYLESHEET_MEDIA)] HRESULT media ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEET_MEDIA)] HRESULT media ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLESHEET_CSSTEXT)] HRESULT cssText ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEET_CSSTEXT)] HRESULT cssText ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLSTYLESHEET_RULES)] HRESULT rules ([retval, out] IHTMLStyleSheetRulesCollection **p);
  };
  [odl, oleautomation, dual, uuid (3050f3d1-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleSheet2 : IDispatch {
    [propget, id (DISPID_IHTMLSTYLESHEET2_PAGES)] HRESULT pages ([retval, out] IHTMLStyleSheetPagesCollection **p);
    [id (DISPID_IHTMLSTYLESHEET2_ADDPAGERULE)] HRESULT addPageRule ([in] BSTR bstrSelector,[in] BSTR bstrStyle,[defaultvalue (-1), in] long lIndex,[defaultvalue (0), retval, out] long *plNewIndex);
  };
  [odl, oleautomation, dual, uuid (30510496-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleSheet3 : IDispatch {
    [propput, id (DISPID_IHTMLSTYLESHEET3_IE8_HREF)] HRESULT href ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEET3_IE8_HREF)] HRESULT href ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLSTYLESHEET3_ISALTERNATE)] HRESULT isAlternate ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLSTYLESHEET3_ISPREFALTERNATE)] HRESULT isPrefAlternate ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (305106f4-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleSheet4 : IDispatch {
    [propget, id (DISPID_IHTMLSTYLESHEET4_IE9_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLSTYLESHEET4_IE9_HREF)] HRESULT href ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLSTYLESHEET4_IE9_TITLE)] HRESULT title ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLSTYLESHEET4_OWNERNODE)] HRESULT ownerNode ([retval, out] IHTMLElement **p);
    [propget, id (DISPID_IHTMLSTYLESHEET4_OWNERRULE)] HRESULT ownerRule ([retval, out] IHTMLCSSRule **p);
    [propget, id (DISPID_IHTMLSTYLESHEET4_CSSRULES)] HRESULT cssRules ([retval, out] IHTMLStyleSheetRulesCollection **p);
    [propget, id (DISPID_IHTMLSTYLESHEET4_IE9_MEDIA)] HRESULT media ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLSTYLESHEET4_INSERTRULE)] HRESULT insertRule ([in] BSTR bstrRule,[defaultvalue (-1), in] long lIndex,[defaultvalue (0), retval, out] long *plNewIndex);
    [id (DISPID_IHTMLSTYLESHEET4_DELETERULE)] HRESULT deleteRule ([defaultvalue (-1), in] long lIndex);
  };
  [hidden, uuid (3050f58d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLStyleSheet {
    properties:
    methods:
    [propput, id (DISPID_IHTMLSTYLESHEET_TITLE)] void title (BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEET_TITLE)] BSTR title ();
    [propget, id (DISPID_IHTMLSTYLESHEET_PARENTSTYLESHEET)] IHTMLStyleSheet *parentStyleSheet ();
    [propget, id (DISPID_IHTMLSTYLESHEET_OWNINGELEMENT)] IHTMLElement *owningElement ();
    [propput, id (DISPID_IHTMLSTYLESHEET_DISABLED)] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLESHEET_DISABLED)] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLSTYLESHEET_READONLY)] VARIANT_BOOL readOnly ();
    [propget, id (DISPID_IHTMLSTYLESHEET_IMPORTS)] IHTMLStyleSheetsCollection *imports ();
    [propput, id (DISPID_IHTMLSTYLESHEET_HREF)] void href (BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEET_HREF)] BSTR href ();
    [propget, id (DISPID_IHTMLSTYLESHEET_TYPE)] BSTR type ();
    [propget, id (DISPID_IHTMLSTYLESHEET_ID)] BSTR id ();
    [id (DISPID_IHTMLSTYLESHEET_ADDIMPORT)] long addImport ([in] BSTR bstrURL,[defaultvalue (-1), in] long lIndex);
    [id (DISPID_IHTMLSTYLESHEET_ADDRULE)] long addRule ([in] BSTR bstrSelector,[in] BSTR bstrStyle,[defaultvalue (-1), in] long lIndex);
    [id (DISPID_IHTMLSTYLESHEET_REMOVEIMPORT)] void removeImport ([in] long lIndex);
    [id (DISPID_IHTMLSTYLESHEET_REMOVERULE)] void removeRule ([in] long lIndex);
    [propput, id (DISPID_IHTMLSTYLESHEET_MEDIA)] void media (BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEET_MEDIA)] BSTR media ();
    [propput, id (DISPID_IHTMLSTYLESHEET_CSSTEXT)] void cssText (BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEET_CSSTEXT)] BSTR cssText ();
    [propget, id (DISPID_IHTMLSTYLESHEET_RULES)] IHTMLStyleSheetRulesCollection *rules ();
    [propget, id (DISPID_IHTMLSTYLESHEET2_PAGES)] IHTMLStyleSheetPagesCollection *pages ();
    [id (DISPID_IHTMLSTYLESHEET2_ADDPAGERULE)] long addPageRule ([in] BSTR bstrSelector,[in] BSTR bstrStyle,[defaultvalue (-1), in] long lIndex);
    [propput, id (DISPID_IHTMLSTYLESHEET3_IE8_HREF)] void ie8_href (BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEET3_IE8_HREF)] BSTR ie8_href ();
    [propget, id (DISPID_IHTMLSTYLESHEET3_ISALTERNATE)] VARIANT_BOOL isAlternate ();
    [propget, id (DISPID_IHTMLSTYLESHEET3_ISPREFALTERNATE)] VARIANT_BOOL isPrefAlternate ();
    [propget, id (DISPID_IHTMLSTYLESHEET4_IE9_TYPE)] BSTR ie9_type ();
    [propget, id (DISPID_IHTMLSTYLESHEET4_IE9_HREF)] VARIANT ie9_href ();
    [propget, id (DISPID_IHTMLSTYLESHEET4_IE9_TITLE)] BSTR ie9_title ();
    [propget, id (DISPID_IHTMLSTYLESHEET4_OWNERNODE)] IHTMLElement *ownerNode ();
    [propget, id (DISPID_IHTMLSTYLESHEET4_OWNERRULE)] IHTMLCSSRule *ownerRule ();
    [propget, id (DISPID_IHTMLSTYLESHEET4_CSSRULES)] IHTMLStyleSheetRulesCollection *cssRules ();
    [propget, id (DISPID_IHTMLSTYLESHEET4_IE9_MEDIA)] VARIANT ie9_media ();
    [id (DISPID_IHTMLSTYLESHEET4_INSERTRULE)] long insertRule ([in] BSTR bstrRule,[defaultvalue (-1), in] long lIndex);
    [id (DISPID_IHTMLSTYLESHEET4_DELETERULE)] void deleteRule ([defaultvalue (-1), in] long lIndex);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f2e4-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStyleSheet {
    [default] dispinterface DispHTMLStyleSheet;
    interface IHTMLStyleSheet;
    interface IHTMLStyleSheet2;
    interface IHTMLStyleSheet3;
    interface IHTMLStyleSheet4;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStyleSheet;")
  [odl, oleautomation, dual, uuid (3050f37e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleSheetsCollection : IDispatch {
    [propget, id (DISPID_IHTMLSTYLESHEETSCOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSTYLESHEETSCOLLECTION__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLSTYLESHEETSCOLLECTION_ITEM)] HRESULT item ([in] VARIANT *pvarIndex,[retval, out] VARIANT *pvarResult);
  };
  [odl, oleautomation, dual, uuid (305106e7-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleSheetsCollection2 : IDispatch {
    [id (DISPID_IHTMLSTYLESHEETSCOLLECTION2_IE9_ITEM)] HRESULT item ([in] long index,[retval, out] VARIANT *pvarResult);
  };
  [hidden, uuid (3050f547-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLStyleSheetsCollection {
    properties:
    methods:
    [propget, id (DISPID_IHTMLSTYLESHEETSCOLLECTION_LENGTH)] long length ();
    [propget, id (DISPID_IHTMLSTYLESHEETSCOLLECTION__NEWENUM), hidden, restricted] IUnknown *_newEnum ();
    [id (DISPID_IHTMLSTYLESHEETSCOLLECTION_ITEM)] VARIANT item ([in] VARIANT *pvarIndex);
    [id (DISPID_IHTMLSTYLESHEETSCOLLECTION2_IE9_ITEM)] VARIANT ie9_item ([in] long index);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f37f-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStyleSheetsCollection {
    [default] dispinterface DispHTMLStyleSheetsCollection;
    interface IHTMLStyleSheetsCollection;
    interface IHTMLStyleSheetsCollection2;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStyleSheetArray;")
  [hidden, uuid (3050f61d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLLinkElementEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLLINKELEMENTEVENTS2_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLLINKELEMENTEVENTS2_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f3cc-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLLinkElementEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
    [id (DISPID_HTMLLINKELEMENTEVENTS_ONLOAD)] void onload ();
    [id (DISPID_HTMLLINKELEMENTEVENTS_ONERROR)] void onerror ();
  };
  [odl, oleautomation, dual, uuid (3050f205-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLLinkElement : IDispatch {
    [propput, id (DISPID_IHTMLLINKELEMENT_HREF), displaybind, bindable] HRESULT href ([in] BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT_HREF), displaybind, bindable] HRESULT href ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLINKELEMENT_REL), displaybind, bindable] HRESULT rel ([in] BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT_REL), displaybind, bindable] HRESULT rel ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLINKELEMENT_REV), displaybind, bindable] HRESULT rev ([in] BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT_REV), displaybind, bindable] HRESULT rev ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLINKELEMENT_TYPE), displaybind, bindable] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT_TYPE), displaybind, bindable] HRESULT type ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLLINKELEMENT_READYSTATE)] HRESULT readyState ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLINKELEMENT_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLLINKELEMENT_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLLINKELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLLINKELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLLINKELEMENT_ONERROR), displaybind, bindable] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLLINKELEMENT_ONERROR), displaybind, bindable] HRESULT onerror ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLLINKELEMENT_STYLESHEET)] HRESULT styleSheet ([retval, out] IHTMLStyleSheet **p);
    [propput, id (DISPID_IHTMLLINKELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLLINKELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLLINKELEMENT_MEDIA), displaybind, bindable] HRESULT media ([in] BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT_MEDIA), displaybind, bindable] HRESULT media ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f4e5-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLLinkElement2 : IDispatch {
    [propput, id (DISPID_IHTMLLINKELEMENT2_TARGET), displaybind, bindable] HRESULT target ([in] BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT2_TARGET), displaybind, bindable] HRESULT target ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f81e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLLinkElement3 : IDispatch {
    [propput, id (DISPID_IHTMLLINKELEMENT3_CHARSET), displaybind, bindable] HRESULT charset ([in] BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT3_CHARSET), displaybind, bindable] HRESULT charset ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLINKELEMENT3_HREFLANG), displaybind, bindable] HRESULT hreflang ([in] BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT3_HREFLANG), displaybind, bindable] HRESULT hreflang ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3051043a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLLinkElement4 : IDispatch {
    [propput, id (DISPID_IHTMLLINKELEMENT4_IE8_HREF)] HRESULT href ([in] BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT4_IE8_HREF)] HRESULT href ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510726-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLLinkElement5 : IDispatch {
    [propget, id (DISPID_IHTMLLINKELEMENT5_SHEET)] HRESULT sheet ([retval, out] IHTMLStyleSheet **p);
  };
  [hidden, uuid (3050f524-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLLinkElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLLINKELEMENT_HREF), displaybind, bindable] void href (BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT_HREF), displaybind, bindable] BSTR href ();
    [propput, id (DISPID_IHTMLLINKELEMENT_REL), displaybind, bindable] void rel (BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT_REL), displaybind, bindable] BSTR rel ();
    [propput, id (DISPID_IHTMLLINKELEMENT_REV), displaybind, bindable] void rev (BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT_REV), displaybind, bindable] BSTR rev ();
    [propput, id (DISPID_IHTMLLINKELEMENT_TYPE), displaybind, bindable] void type (BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT_TYPE), displaybind, bindable] BSTR type ();
    [propget, id (DISPID_IHTMLLINKELEMENT_STYLESHEET)] IHTMLStyleSheet *styleSheet ();
    [propput, id (DISPID_IHTMLLINKELEMENT_MEDIA), displaybind, bindable] void media (BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT_MEDIA), displaybind, bindable] BSTR media ();
    [propput, id (DISPID_IHTMLLINKELEMENT2_TARGET), displaybind, bindable] void target (BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT2_TARGET), displaybind, bindable] BSTR target ();
    [propput, id (DISPID_IHTMLLINKELEMENT3_CHARSET), displaybind, bindable] void charset (BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT3_CHARSET), displaybind, bindable] BSTR charset ();
    [propput, id (DISPID_IHTMLLINKELEMENT3_HREFLANG), displaybind, bindable] void hreflang (BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT3_HREFLANG), displaybind, bindable] BSTR hreflang ();
    [propput, id (DISPID_IHTMLLINKELEMENT4_IE8_HREF)] void ie8_href (BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT4_IE8_HREF)] BSTR ie8_href ();
    [propget, id (DISPID_IHTMLLINKELEMENT5_SHEET)] IHTMLStyleSheet *sheet ();
  };
  [noncreatable, uuid (3050f277-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLLinkElement {
    [default] dispinterface DispHTMLLinkElement;
    [source, default] dispinterface HTMLLinkElementEvents;
    [source] dispinterface HTMLLinkElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLLinkElement;
    interface IHTMLLinkElement2;
    interface IHTMLLinkElement3;
    interface IHTMLLinkElement4;
    interface IHTMLLinkElement5;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CLinkElement;")
  typedef enum _htmlUnit {
    htmlUnitCharacter = 1,
    htmlUnitWord = 2,
    htmlUnitSentence = 3,
    htmlUnitTextEdit = 6,
    htmlUnit_Max = 0x7FFFFFFF
  } htmlUnit;

  typedef enum _htmlEndPoints {
    htmlEndPointsStartToStart = 1,
    htmlEndPointsStartToEnd = 2,
    htmlEndPointsEndToStart = 3,
    htmlEndPointsEndToEnd = 4,
    htmlEndPoints_Max = 0x7FFFFFFF
  } htmlEndPoints;

  typedef enum _htmlDirection {
    htmlDirectionForward = 99999,
    htmlDirectionBackward = -99999,
    htmlDirection_Max = 0x7FFFFFFF
  } htmlDirection;
  [odl, oleautomation, dual, uuid (3050f220-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTxtRange : IDispatch {
    [propget, id (DISPID_IHTMLTXTRANGE_HTMLTEXT)] HRESULT htmlText ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTXTRANGE_TEXT)] HRESULT text ([in] BSTR v);
    [propget, id (DISPID_IHTMLTXTRANGE_TEXT)] HRESULT text ([retval, out] BSTR *p);
    [id (DISPID_IHTMLTXTRANGE_PARENTELEMENT)] HRESULT parentElement ([retval, out] IHTMLElement **parent);
    [id (DISPID_IHTMLTXTRANGE_DUPLICATE)] HRESULT duplicate ([retval, out] IHTMLTxtRange **Duplicate);
    [id (DISPID_IHTMLTXTRANGE_INRANGE)] HRESULT inRange ([in] IHTMLTxtRange *Range,[retval, out] VARIANT_BOOL *InRange);
    [id (DISPID_IHTMLTXTRANGE_ISEQUAL)] HRESULT isEqual ([in] IHTMLTxtRange *Range,[retval, out] VARIANT_BOOL *IsEqual);
    [id (DISPID_IHTMLTXTRANGE_SCROLLINTOVIEW)] HRESULT scrollIntoView ([defaultvalue (-1), in] VARIANT_BOOL fStart);
    [id (DISPID_IHTMLTXTRANGE_COLLAPSE)] HRESULT collapse ([defaultvalue (-1), in] VARIANT_BOOL Start);
    [id (DISPID_IHTMLTXTRANGE_EXPAND)] HRESULT expand ([in] BSTR Unit,[retval, out] VARIANT_BOOL *Success);
    [id (DISPID_IHTMLTXTRANGE_MOVE)] HRESULT move ([in] BSTR Unit,[defaultvalue (1), in] long Count,[defaultvalue (0), retval, out] long *ActualCount);
    [id (DISPID_IHTMLTXTRANGE_MOVESTART)] HRESULT moveStart ([in] BSTR Unit,[defaultvalue (1), in] long Count,[defaultvalue (0), retval, out] long *ActualCount);
    [id (DISPID_IHTMLTXTRANGE_MOVEEND)] HRESULT moveEnd ([in] BSTR Unit,[defaultvalue (1), in] long Count,[defaultvalue (0), retval, out] long *ActualCount);
    [id (DISPID_IHTMLTXTRANGE_SELECT)] HRESULT select ();
    [id (DISPID_IHTMLTXTRANGE_PASTEHTML)] HRESULT pasteHTML ([in] BSTR html);
    [id (DISPID_IHTMLTXTRANGE_MOVETOELEMENTTEXT)] HRESULT moveToElementText ([in] IHTMLElement *element);
    [id (DISPID_IHTMLTXTRANGE_SETENDPOINT)] HRESULT setEndPoint ([in] BSTR how,[in] IHTMLTxtRange *SourceRange);
    [id (DISPID_IHTMLTXTRANGE_COMPAREENDPOINTS)] HRESULT compareEndPoints ([in] BSTR how,[in] IHTMLTxtRange *SourceRange,[retval, out] long *ret);
    [id (DISPID_IHTMLTXTRANGE_FINDTEXT)] HRESULT findText ([in] BSTR String,[defaultvalue (1073741823), in] long count,[defaultvalue (0), in] long Flags,[defaultvalue (0), retval, out] VARIANT_BOOL *Success);
    [id (DISPID_IHTMLTXTRANGE_MOVETOPOINT)] HRESULT moveToPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLTXTRANGE_GETBOOKMARK)] HRESULT getBookmark ([retval, out] BSTR *Boolmark);
    [id (DISPID_IHTMLTXTRANGE_MOVETOBOOKMARK)] HRESULT moveToBookmark ([in] BSTR Bookmark,[retval, out] VARIANT_BOOL *Success);
    [id (DISPID_IHTMLTXTRANGE_QUERYCOMMANDSUPPORTED)] HRESULT queryCommandSupported ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLTXTRANGE_QUERYCOMMANDENABLED)] HRESULT queryCommandEnabled ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLTXTRANGE_QUERYCOMMANDSTATE)] HRESULT queryCommandState ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLTXTRANGE_QUERYCOMMANDINDETERM)] HRESULT queryCommandIndeterm ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLTXTRANGE_QUERYCOMMANDTEXT)] HRESULT queryCommandText ([in] BSTR cmdID,[retval, out] BSTR *pcmdText);
    [id (DISPID_IHTMLTXTRANGE_QUERYCOMMANDVALUE)] HRESULT queryCommandValue ([in] BSTR cmdID,[retval, out] VARIANT *pcmdValue);
    [id (DISPID_IHTMLTXTRANGE_EXECCOMMAND)] HRESULT execCommand ([in] BSTR cmdID, [in] VARIANT_BOOL showUI, [optional, in] VARIANT value,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLTXTRANGE_EXECCOMMANDSHOWHELP)] HRESULT execCommandShowHelp ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
  };
  [odl, oleautomation, dual, uuid (3050f40b-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTextRangeMetrics : IDispatch {
    [propget, id (DISPID_IHTMLTEXTRANGEMETRICS_OFFSETTOP)] HRESULT offsetTop ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTEXTRANGEMETRICS_OFFSETLEFT)] HRESULT offsetLeft ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTEXTRANGEMETRICS_BOUNDINGTOP)] HRESULT boundingTop ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTEXTRANGEMETRICS_BOUNDINGLEFT)] HRESULT boundingLeft ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTEXTRANGEMETRICS_BOUNDINGWIDTH)] HRESULT boundingWidth ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTEXTRANGEMETRICS_BOUNDINGHEIGHT)] HRESULT boundingHeight ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (3050f4a6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTextRangeMetrics2 : IDispatch {
    [id (DISPID_IHTMLTEXTRANGEMETRICS2_GETCLIENTRECTS)] HRESULT getClientRects ([retval, out] IHTMLRectCollection **pRectCol);
    [id (DISPID_IHTMLTEXTRANGEMETRICS2_GETBOUNDINGCLIENTRECT)] HRESULT getBoundingClientRect ([retval, out] IHTMLRect **pRect);
  };
  [odl, oleautomation, dual, uuid (3050f7ed-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTxtRangeCollection : IDispatch {
    [propget, id (DISPID_IHTMLTXTRANGECOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTXTRANGECOLLECTION__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLTXTRANGECOLLECTION_ITEM)] HRESULT item ([in] VARIANT *pvarIndex,[retval, out] VARIANT *pvarResult);
  };
  [odl, oleautomation, dual, uuid (305104ae-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMRange : IDispatch {
    [propget, id (DISPID_IHTMLDOMRANGE_STARTCONTAINER)] HRESULT startContainer ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLDOMRANGE_STARTOFFSET)] HRESULT startOffset ([retval, out] long *p);
    [propget, id (DISPID_IHTMLDOMRANGE_ENDCONTAINER)] HRESULT endContainer ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLDOMRANGE_ENDOFFSET)] HRESULT endOffset ([retval, out] long *p);
    [propget, id (DISPID_IHTMLDOMRANGE_COLLAPSED)] HRESULT collapsed ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLDOMRANGE_COMMONANCESTORCONTAINER)] HRESULT commonAncestorContainer ([retval, out] IHTMLDOMNode **p);
    [id (DISPID_IHTMLDOMRANGE_SETSTART)] HRESULT setStart ([in] IDispatch *refNode,[in] long offset);
    [id (DISPID_IHTMLDOMRANGE_SETEND)] HRESULT setEnd ([in] IDispatch *refNode,[in] long offset);
    [id (DISPID_IHTMLDOMRANGE_SETSTARTBEFORE)] HRESULT setStartBefore ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_SETSTARTAFTER)] HRESULT setStartAfter ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_SETENDBEFORE)] HRESULT setEndBefore ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_SETENDAFTER)] HRESULT setEndAfter ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_COLLAPSE)] HRESULT collapse ([in] VARIANT_BOOL toStart);
    [id (DISPID_IHTMLDOMRANGE_SELECTNODE)] HRESULT selectNode ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_SELECTNODECONTENTS)] HRESULT selectNodeContents ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_COMPAREBOUNDARYPOINTS)] HRESULT compareBoundaryPoints ([in] short how,[in] IDispatch *sourceRange,[retval, out] long *compareResult);
    [id (DISPID_IHTMLDOMRANGE_DELETECONTENTS)] HRESULT deleteContents ();
    [id (DISPID_IHTMLDOMRANGE_EXTRACTCONTENTS)] HRESULT extractContents ([retval, out] IDispatch **ppDocumentFragment);
    [id (DISPID_IHTMLDOMRANGE_CLONECONTENTS)] HRESULT cloneContents ([retval, out] IDispatch **ppDocumentFragment);
    [id (DISPID_IHTMLDOMRANGE_INSERTNODE)] HRESULT insertNode ([in] IDispatch *newNode);
    [id (DISPID_IHTMLDOMRANGE_SURROUNDCONTENTS)] HRESULT surroundContents ([in] IDispatch *newParent);
    [id (DISPID_IHTMLDOMRANGE_CLONERANGE)] HRESULT cloneRange ([retval, out] IHTMLDOMRange **ppClonedRange);
    [id (DISPID_IHTMLDOMRANGE_TOSTRING)] HRESULT toString ([retval, out] BSTR *pRangeString);
    [id (DISPID_IHTMLDOMRANGE_DETACH)] HRESULT detach ();
    [id (DISPID_IHTMLDOMRANGE_GETCLIENTRECTS)] HRESULT getClientRects ([retval, out] IHTMLRectCollection **ppRectCol);
    [id (DISPID_IHTMLDOMRANGE_GETBOUNDINGCLIENTRECT)] HRESULT getBoundingClientRect ([retval, out] IHTMLRect **ppRect);
  };
  [hidden, uuid (3050f5a3-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDOMRange {
    properties:
    methods:
    [propget, id (DISPID_IHTMLDOMRANGE_STARTCONTAINER)] IHTMLDOMNode *startContainer ();
    [propget, id (DISPID_IHTMLDOMRANGE_STARTOFFSET)] long startOffset ();
    [propget, id (DISPID_IHTMLDOMRANGE_ENDCONTAINER)] IHTMLDOMNode *endContainer ();
    [propget, id (DISPID_IHTMLDOMRANGE_ENDOFFSET)] long endOffset ();
    [propget, id (DISPID_IHTMLDOMRANGE_COLLAPSED)] VARIANT_BOOL collapsed ();
    [propget, id (DISPID_IHTMLDOMRANGE_COMMONANCESTORCONTAINER)] IHTMLDOMNode *commonAncestorContainer ();
    [id (DISPID_IHTMLDOMRANGE_SETSTART)] void setStart ([in] IDispatch *refNode,[in] long offset);
    [id (DISPID_IHTMLDOMRANGE_SETEND)] void setEnd ([in] IDispatch *refNode,[in] long offset);
    [id (DISPID_IHTMLDOMRANGE_SETSTARTBEFORE)] void setStartBefore ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_SETSTARTAFTER)] void setStartAfter ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_SETENDBEFORE)] void setEndBefore ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_SETENDAFTER)] void setEndAfter ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_COLLAPSE)] void collapse ([in] VARIANT_BOOL toStart);
    [id (DISPID_IHTMLDOMRANGE_SELECTNODE)] void selectNode ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_SELECTNODECONTENTS)] void selectNodeContents ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_COMPAREBOUNDARYPOINTS)] long compareBoundaryPoints ([in] short how,[in] IDispatch *sourceRange);
    [id (DISPID_IHTMLDOMRANGE_DELETECONTENTS)] void deleteContents ();
    [id (DISPID_IHTMLDOMRANGE_EXTRACTCONTENTS)] IDispatch *extractContents ();
    [id (DISPID_IHTMLDOMRANGE_CLONECONTENTS)] IDispatch *cloneContents ();
    [id (DISPID_IHTMLDOMRANGE_INSERTNODE)] void insertNode ([in] IDispatch *newNode);
    [id (DISPID_IHTMLDOMRANGE_SURROUNDCONTENTS)] void surroundContents ([in] IDispatch *newParent);
    [id (DISPID_IHTMLDOMRANGE_CLONERANGE)] IHTMLDOMRange *cloneRange ();
    [id (DISPID_IHTMLDOMRANGE_TOSTRING)] BSTR toString ();
    [id (DISPID_IHTMLDOMRANGE_DETACH)] void detach ();
    [id (DISPID_IHTMLDOMRANGE_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLDOMRANGE_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
  };
  [noncreatable, uuid (305106c3-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDOMRange {
    [default] dispinterface DispHTMLDOMRange;
    interface IHTMLDOMRange;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDomRange;")
  [hidden, uuid (3050f614-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLFormElementEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLFORMELEMENTEVENTS2_ONSUBMIT)] VARIANT_BOOL onsubmit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLFORMELEMENTEVENTS2_ONRESET)] VARIANT_BOOL onreset ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f364-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLFormElementEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
    [id (DISPID_HTMLFORMELEMENTEVENTS_ONSUBMIT)] VARIANT_BOOL onsubmit ();
    [id (DISPID_HTMLFORMELEMENTEVENTS_ONRESET)] VARIANT_BOOL onreset ();
  };
  [odl, oleautomation, dual, uuid (3050f1f7-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFormElement : IDispatch {
    [propput, id (DISPID_IHTMLFORMELEMENT_ACTION), displaybind, bindable] HRESULT action ([in] BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_ACTION), displaybind, bindable] HRESULT action ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFORMELEMENT_DIR), displaybind, bindable] HRESULT dir ([in] BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_DIR), displaybind, bindable] HRESULT dir ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFORMELEMENT_ENCODING), displaybind, bindable] HRESULT encoding ([in] BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_ENCODING), displaybind, bindable] HRESULT encoding ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFORMELEMENT_METHOD), displaybind, bindable] HRESULT method ([in] BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_METHOD), displaybind, bindable] HRESULT method ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLFORMELEMENT_ELEMENTS)] HRESULT elements ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLFORMELEMENT_TARGET), displaybind, bindable] HRESULT target ([in] BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_TARGET), displaybind, bindable] HRESULT target ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFORMELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFORMELEMENT_ONSUBMIT), displaybind, bindable] HRESULT onsubmit ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFORMELEMENT_ONSUBMIT), displaybind, bindable] HRESULT onsubmit ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFORMELEMENT_ONRESET), displaybind, bindable] HRESULT onreset ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFORMELEMENT_ONRESET), displaybind, bindable] HRESULT onreset ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLFORMELEMENT_SUBMIT)] HRESULT submit ();
    [id (DISPID_IHTMLFORMELEMENT_RESET)] HRESULT reset ();
    [propput, id (DISPID_IHTMLFORMELEMENT_LENGTH)] HRESULT length ([in] long v);
    [propget, id (DISPID_IHTMLFORMELEMENT_LENGTH)] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLFORMELEMENT__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLFORMELEMENT_ITEM)] HRESULT item ([optional, in] VARIANT name,[optional, in] VARIANT index,[retval, out] IDispatch **pdisp);
    [id (DISPID_IHTMLFORMELEMENT_TAGS)] HRESULT tags ([in] VARIANT tagName,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (3050f4f6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFormElement2 : IDispatch {
    [propput, id (DISPID_IHTMLFORMELEMENT2_ACCEPTCHARSET), displaybind, bindable] HRESULT acceptCharset ([in] BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT2_ACCEPTCHARSET), displaybind, bindable] HRESULT acceptCharset ([retval, out] BSTR *p);
    [id (DISPID_IHTMLFORMELEMENT2_URNS)] HRESULT urns ([in] VARIANT urn,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (3050f836-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFormElement3 : IDispatch {
    [id (DISPID_IHTMLFORMELEMENT3_NAMEDITEM)] HRESULT namedItem ([in] BSTR name,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (3050f645-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSubmitData : IDispatch {
    [id (DISPID_IHTMLSUBMITDATA_APPENDNAMEVALUEPAIR)] HRESULT appendNameValuePair ([defaultvalue (L""), in] BSTR name,[defaultvalue (L""), in] BSTR value);
    [id (DISPID_IHTMLSUBMITDATA_APPENDNAMEFILEPAIR)] HRESULT appendNameFilePair ([defaultvalue (L""), in] BSTR name,[defaultvalue (L""), in] BSTR filename);
    [id (DISPID_IHTMLSUBMITDATA_APPENDITEMSEPARATOR)] HRESULT appendItemSeparator ();
  };
  [odl, oleautomation, dual, uuid (3051042c-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFormElement4 : IDispatch {
    [propput, id (DISPID_IHTMLFORMELEMENT4_IE8_ACTION), displaybind, bindable] HRESULT action ([in] BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT4_IE8_ACTION), displaybind, bindable] HRESULT action ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f510-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLFormElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLFORMELEMENT_ACTION), displaybind, bindable] void action (BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_ACTION), displaybind, bindable] BSTR action ();
    [propput, id (DISPID_IHTMLFORMELEMENT_ENCODING), displaybind, bindable] void encoding (BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_ENCODING), displaybind, bindable] BSTR encoding ();
    [propput, id (DISPID_IHTMLFORMELEMENT_METHOD), displaybind, bindable] void method (BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_METHOD), displaybind, bindable] BSTR method ();
    [propget, id (DISPID_IHTMLFORMELEMENT_ELEMENTS)] IDispatch *elements ();
    [propput, id (DISPID_IHTMLFORMELEMENT_TARGET), displaybind, bindable] void target (BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_TARGET), displaybind, bindable] BSTR target ();
    [propput, id (DISPID_IHTMLFORMELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_NAME), displaybind, bindable] BSTR name ();
    [id (DISPID_IHTMLFORMELEMENT_SUBMIT)] void submit ();
    [id (DISPID_IHTMLFORMELEMENT_RESET)] void reset ();
    [propput, id (DISPID_IHTMLFORMELEMENT_LENGTH)] void length (long v);
    [propget, id (DISPID_IHTMLFORMELEMENT_LENGTH)] long length ();
    [propget, id (DISPID_IHTMLFORMELEMENT__NEWENUM), hidden, restricted] IUnknown *_newEnum ();
    [id (DISPID_IHTMLFORMELEMENT_ITEM)] IDispatch *item ([optional, in] VARIANT name,[optional, in] VARIANT index);
    [id (DISPID_IHTMLFORMELEMENT_TAGS)] IDispatch *tags ([in] VARIANT tagName);
    [propput, id (DISPID_IHTMLFORMELEMENT2_ACCEPTCHARSET), displaybind, bindable] void acceptCharset (BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT2_ACCEPTCHARSET), displaybind, bindable] BSTR acceptCharset ();
    [id (DISPID_IHTMLFORMELEMENT2_URNS)] IDispatch *urns ([in] VARIANT urn);
    [id (DISPID_IHTMLFORMELEMENT3_NAMEDITEM)] IDispatch *namedItem ([in] BSTR name);
    [id (DISPID_IHTMLSUBMITDATA_APPENDNAMEVALUEPAIR)] void appendNameValuePair ([defaultvalue (L""), in] BSTR name,[defaultvalue (L""), in] BSTR value);
    [id (DISPID_IHTMLSUBMITDATA_APPENDNAMEFILEPAIR)] void appendNameFilePair ([defaultvalue (L""), in] BSTR name,[defaultvalue (L""), in] BSTR filename);
    [id (DISPID_IHTMLSUBMITDATA_APPENDITEMSEPARATOR)] void appendItemSeparator ();
    [propput, id (DISPID_IHTMLFORMELEMENT4_IE8_ACTION), displaybind, bindable] void ie8_action (BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT4_IE8_ACTION), displaybind, bindable] BSTR ie8_action ();
  };
  [noncreatable, uuid (3050f251-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLFormElement {
    [default] dispinterface DispHTMLFormElement;
    [source, default] dispinterface HTMLFormElementEvents;
    [source] dispinterface HTMLFormElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLFormElement;
    interface IHTMLFormElement2;
    interface IHTMLFormElement3;
    interface IHTMLSubmitData;
    interface IHTMLFormElement4;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CFormElement;")
  [hidden, uuid (3050f612-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLControlElementEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f4ea-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLControlElementEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
  };

  typedef enum _htmlStart {
    htmlStartfileopen = 0,
    htmlStartmouseover = 1,
    htmlStart_Max = 0x7FFFFFFF
  } htmlStart;

  [odl, oleautomation, dual, uuid (3050f4e9-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLControlElement : IDispatch {
    [propput, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] HRESULT tabIndex ([in] short v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] HRESULT tabIndex ([retval, out] short *p);
    [id (DISPID_IHTMLCONTROLELEMENT_FOCUS)] HRESULT focus ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] HRESULT accessKey ([in] BSTR v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] HRESULT accessKey ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] HRESULT onblur ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] HRESULT onblur ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] HRESULT onfocus ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] HRESULT onfocus ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] HRESULT onresize ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] HRESULT onresize ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLCONTROLELEMENT_BLUR)] HRESULT blur ();
    [id (DISPID_IHTMLCONTROLELEMENT_ADDFILTER)] HRESULT addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLCONTROLELEMENT_REMOVEFILTER)] HRESULT removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTHEIGHT), displaybind, bindable] HRESULT clientHeight ([retval, out] long *p);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTWIDTH), displaybind, bindable] HRESULT clientWidth ([retval, out] long *p);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTTOP), displaybind, bindable] HRESULT clientTop ([retval, out] long *p);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTLEFT), displaybind, bindable] HRESULT clientLeft ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (3050f218-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTextElement : IDispatch {
  };
  [hidden, uuid (3050f537-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTextElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
  };
  [noncreatable, uuid (3050f26a-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTextElement {
    [default] dispinterface DispHTMLTextElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLTextElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTextElement;")
  [hidden, uuid (3050f624-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLTextContainerEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLTEXTCONTAINEREVENTS2_ONCHANGE)] void onchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLTEXTCONTAINEREVENTS2_ONSELECT)] void onselect ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (1ff6aa72-5842-11cf-A707-00aa00c0098d)] dispinterface HTMLTextContainerEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
    [id (DISPID_HTMLTEXTCONTAINEREVENTS_ONCHANGE)] void onchange ();
    [id (DISPID_HTMLTEXTCONTAINEREVENTS_ONSELECT)] void onselect ();
  };
  [odl, oleautomation, dual, uuid (3050f230-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTextContainer : IDispatch {
    [id (DISPID_IHTMLTEXTCONTAINER_CREATECONTROLRANGE)] HRESULT createControlRange ([retval, out] IDispatch **range);
    [propget, id (DISPID_IHTMLTEXTCONTAINER_SCROLLHEIGHT), displaybind, bindable] HRESULT scrollHeight ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTEXTCONTAINER_SCROLLWIDTH), displaybind, bindable] HRESULT scrollWidth ([retval, out] long *p);
    [propput, id (DISPID_IHTMLTEXTCONTAINER_SCROLLTOP), displaybind, bindable] HRESULT scrollTop ([in] long v);
    [propget, id (DISPID_IHTMLTEXTCONTAINER_SCROLLTOP), displaybind, bindable] HRESULT scrollTop ([retval, out] long *p);
    [propput, id (DISPID_IHTMLTEXTCONTAINER_SCROLLLEFT), displaybind, bindable] HRESULT scrollLeft ([in] long v);
    [propget, id (DISPID_IHTMLTEXTCONTAINER_SCROLLLEFT), displaybind, bindable] HRESULT scrollLeft ([retval, out] long *p);
    [propput, id (DISPID_IHTMLTEXTCONTAINER_ONSCROLL), displaybind, bindable] HRESULT onscroll ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTEXTCONTAINER_ONSCROLL), displaybind, bindable] HRESULT onscroll ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (3050f29c-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLControlRange : IDispatch {
    [id (DISPID_IHTMLCONTROLRANGE_SELECT)] HRESULT select ();
    [id (DISPID_IHTMLCONTROLRANGE_ADD)] HRESULT add ([in] IHTMLControlElement *item);
    [id (DISPID_IHTMLCONTROLRANGE_REMOVE)] HRESULT remove ([in] long index);
    [id (DISPID_IHTMLCONTROLRANGE_ITEM)] HRESULT item ([in] long index,[retval, out] IHTMLElement **pdisp);
    [id (DISPID_IHTMLCONTROLRANGE_SCROLLINTOVIEW)] HRESULT scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDSUPPORTED)] HRESULT queryCommandSupported ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDENABLED)] HRESULT queryCommandEnabled ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDSTATE)] HRESULT queryCommandState ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDINDETERM)] HRESULT queryCommandIndeterm ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDTEXT)] HRESULT queryCommandText ([in] BSTR cmdID,[retval, out] BSTR *pcmdText);
    [id (DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDVALUE)] HRESULT queryCommandValue ([in] BSTR cmdID,[retval, out] VARIANT *pcmdValue);
    [id (DISPID_IHTMLCONTROLRANGE_EXECCOMMAND)] HRESULT execCommand ([in] BSTR cmdID,[in] VARIANT_BOOL showUI,[optional, in] VARIANT value,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLCONTROLRANGE_EXECCOMMANDSHOWHELP)] HRESULT execCommandShowHelp ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLCONTROLRANGE_COMMONPARENTELEMENT)] HRESULT commonParentElement ([retval, out] IHTMLElement **parent);
    [propget, id (DISPID_IHTMLCONTROLRANGE_LENGTH)] HRESULT length ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (3050f65e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLControlRange2 : IDispatch {
    [id (DISPID_IHTMLCONTROLRANGE2_ADDELEMENT)] HRESULT addElement ([in] IHTMLElement *item);
  };
  [hidden, uuid (3050f616-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLImgEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLIMGEVENTS2_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLIMGEVENTS2_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLIMGEVENTS2_ONABORT)] void onabort ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f25b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLImgEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
    [id (DISPID_HTMLIMGEVENTS_ONLOAD)] void onload ();
    [id (DISPID_HTMLIMGEVENTS_ONERROR)] void onerror ();
    [id (DISPID_HTMLIMGEVENTS_ONABORT)] void onabort ();
  };
  [odl, oleautomation, dual, uuid (3050f240-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLImgElement : IDispatch {
    [propput, id (DISPID_IHTMLIMGELEMENT_ISMAP), displaybind, bindable] HRESULT isMap ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLIMGELEMENT_ISMAP), displaybind, bindable] HRESULT isMap ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_USEMAP), displaybind, bindable] HRESULT useMap ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_USEMAP), displaybind, bindable] HRESULT useMap ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLIMGELEMENT_MIMETYPE)] HRESULT mimeType ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLIMGELEMENT_FILESIZE)] HRESULT fileSize ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLIMGELEMENT_FILECREATEDDATE)] HRESULT fileCreatedDate ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLIMGELEMENT_FILEMODIFIEDDATE)] HRESULT fileModifiedDate ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLIMGELEMENT_FILEUPDATEDDATE)] HRESULT fileUpdatedDate ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLIMGELEMENT_PROTOCOL)] HRESULT protocol ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLIMGELEMENT_HREF)] HRESULT href ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLIMGELEMENT_NAMEPROP)] HRESULT nameProp ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_BORDER), displaybind, bindable] HRESULT border ([in] VARIANT v);
    [propget, id (DISPID_IHTMLIMGELEMENT_BORDER), displaybind, bindable] HRESULT border ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_VSPACE), displaybind, bindable] HRESULT vspace ([in] long v);
    [propget, id (DISPID_IHTMLIMGELEMENT_VSPACE), displaybind, bindable] HRESULT vspace ([retval, out] long *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_HSPACE), displaybind, bindable] HRESULT hspace ([in] long v);
    [propget, id (DISPID_IHTMLIMGELEMENT_HSPACE), displaybind, bindable] HRESULT hspace ([retval, out] long *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_ALT), displaybind, bindable] HRESULT alt ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_ALT), displaybind, bindable] HRESULT alt ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_SRC), displaybind, bindable] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_SRC), displaybind, bindable] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_LOWSRC), displaybind, bindable] HRESULT lowsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_LOWSRC), displaybind, bindable] HRESULT lowsrc ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_VRML), displaybind, bindable] HRESULT vrml ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_VRML), displaybind, bindable] HRESULT vrml ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_DYNSRC), displaybind, bindable] HRESULT dynsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_DYNSRC), displaybind, bindable] HRESULT dynsrc ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLIMGELEMENT_READYSTATE)] HRESULT readyState ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLIMGELEMENT_COMPLETE)] HRESULT complete ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_LOOP), displaybind, bindable] HRESULT loop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLIMGELEMENT_LOOP), displaybind, bindable] HRESULT loop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_ALIGN), displaybind, bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_ALIGN), displaybind, bindable] HRESULT align ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLIMGELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_ONERROR), displaybind, bindable] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLIMGELEMENT_ONERROR), displaybind, bindable] HRESULT onerror ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_ONABORT), displaybind, bindable] HRESULT onabort ([in] VARIANT v);
    [propget, id (DISPID_IHTMLIMGELEMENT_ONABORT), displaybind, bindable] HRESULT onabort ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_WIDTH)] HRESULT width ([in] long v);
    [propget, id (DISPID_IHTMLIMGELEMENT_WIDTH)] HRESULT width ([retval, out] long *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_HEIGHT)] HRESULT height ([in] long v);
    [propget, id (DISPID_IHTMLIMGELEMENT_HEIGHT)] HRESULT height ([retval, out] long *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_START), displaybind, bindable] HRESULT start ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_START), displaybind, bindable] HRESULT start ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f826-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLImgElement2 : IDispatch {
    [propput, id (DISPID_IHTMLIMGELEMENT2_LONGDESC), displaybind, bindable] HRESULT longDesc ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT2_LONGDESC), displaybind, bindable] HRESULT longDesc ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510434-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLImgElement3 : IDispatch {
    [propput, id (DISPID_IHTMLIMGELEMENT3_IE8_LONGDESC)] HRESULT longDesc ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT3_IE8_LONGDESC)] HRESULT longDesc ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT3_IE8_VRML)] HRESULT vrml ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT3_IE8_VRML)] HRESULT vrml ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT3_IE8_LOWSRC)] HRESULT lowsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT3_IE8_LOWSRC)] HRESULT lowsrc ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT3_IE8_DYNSRC)] HRESULT dynsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT3_IE8_DYNSRC)] HRESULT dynsrc ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305107f6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLImgElement4 : IDispatch {
    [propget, id (DISPID_IHTMLIMGELEMENT4_NATURALWIDTH)] HRESULT naturalWidth ([retval, out] long *p);
    [propget, id (DISPID_IHTMLIMGELEMENT4_NATURALHEIGHT)] HRESULT naturalHeight ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (30510793-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMSImgElement : IDispatch {
    [propput, id (DISPID_IHTMLMSIMGELEMENT_MSPLAYTODISABLED), displaybind, bindable] HRESULT msPlayToDisabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSIMGELEMENT_MSPLAYTODISABLED), displaybind, bindable] HRESULT msPlayToDisabled ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLMSIMGELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] HRESULT msPlayToPrimary ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSIMGELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] HRESULT msPlayToPrimary ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (3050f38e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLImageElementFactory : IDispatch {
    [id (DISPID_IHTMLIMAGEELEMENTFACTORY_CREATE)] HRESULT create ([optional, in] VARIANT width,[optional, in] VARIANT height,[retval, out] IHTMLImgElement **);
  };
  [hidden, uuid (3050f51c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLImg {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLIMGELEMENT_ISMAP), displaybind, bindable] void isMap (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLIMGELEMENT_ISMAP), displaybind, bindable] VARIANT_BOOL isMap ();
    [propput, id (DISPID_IHTMLIMGELEMENT_USEMAP), displaybind, bindable] void useMap (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_USEMAP), displaybind, bindable] BSTR useMap ();
    [propget, id (DISPID_IHTMLIMGELEMENT_MIMETYPE)] BSTR mimeType ();
    [propget, id (DISPID_IHTMLIMGELEMENT_FILESIZE)] BSTR fileSize ();
    [propget, id (DISPID_IHTMLIMGELEMENT_FILECREATEDDATE)] BSTR fileCreatedDate ();
    [propget, id (DISPID_IHTMLIMGELEMENT_FILEMODIFIEDDATE)] BSTR fileModifiedDate ();
    [propget, id (DISPID_IHTMLIMGELEMENT_FILEUPDATEDDATE)] BSTR fileUpdatedDate ();
    [propget, id (DISPID_IHTMLIMGELEMENT_PROTOCOL)] BSTR protocol ();
    [propget, id (DISPID_IHTMLIMGELEMENT_HREF)] BSTR href ();
    [propget, id (DISPID_IHTMLIMGELEMENT_NAMEPROP)] BSTR nameProp ();
    [propput, id (DISPID_IHTMLIMGELEMENT_BORDER), displaybind, bindable] void border (VARIANT v);
    [propget, id (DISPID_IHTMLIMGELEMENT_BORDER), displaybind, bindable] VARIANT border ();
    [propput, id (DISPID_IHTMLIMGELEMENT_VSPACE), displaybind, bindable] void vspace (long v);
    [propget, id (DISPID_IHTMLIMGELEMENT_VSPACE), displaybind, bindable] long vspace ();
    [propput, id (DISPID_IHTMLIMGELEMENT_HSPACE), displaybind, bindable] void hspace (long v);
    [propget, id (DISPID_IHTMLIMGELEMENT_HSPACE), displaybind, bindable] long hspace ();
    [propput, id (DISPID_IHTMLIMGELEMENT_ALT), displaybind, bindable] void alt (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_ALT), displaybind, bindable] BSTR alt ();
    [propput, id (DISPID_IHTMLIMGELEMENT_SRC), displaybind, bindable] void src (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_SRC), displaybind, bindable] BSTR src ();
    [propput, id (DISPID_IHTMLIMGELEMENT_LOWSRC), displaybind, bindable] void lowsrc (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_LOWSRC), displaybind, bindable] BSTR lowsrc ();
    [propput, id (DISPID_IHTMLIMGELEMENT_VRML), displaybind, bindable] void vrml (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_VRML), displaybind, bindable] BSTR vrml ();
    [propput, id (DISPID_IHTMLIMGELEMENT_DYNSRC), displaybind, bindable] void dynsrc (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_DYNSRC), displaybind, bindable] BSTR dynsrc ();
    [propget, id (DISPID_IHTMLIMGELEMENT_COMPLETE)] VARIANT_BOOL complete ();
    [propput, id (DISPID_IHTMLIMGELEMENT_LOOP), displaybind, bindable] void loop (VARIANT v);
    [propget, id (DISPID_IHTMLIMGELEMENT_LOOP), displaybind, bindable] VARIANT loop ();
    [propput, id (DISPID_IHTMLIMGELEMENT_ALIGN), displaybind, bindable] void align (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_ALIGN), displaybind, bindable] BSTR align ();
    [propput, id (DISPID_IHTMLIMGELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propput, id (DISPID_IHTMLIMGELEMENT_WIDTH)] void width (long v);
    [propget, id (DISPID_IHTMLIMGELEMENT_WIDTH)] long width ();
    [propput, id (DISPID_IHTMLIMGELEMENT_HEIGHT)] void height (long v);
    [propget, id (DISPID_IHTMLIMGELEMENT_HEIGHT)] long height ();
    [propput, id (DISPID_IHTMLIMGELEMENT_START), displaybind, bindable] void start (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_START), displaybind, bindable] BSTR start ();
    [propput, id (DISPID_IHTMLIMGELEMENT2_LONGDESC), displaybind, bindable] void longDesc (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT2_LONGDESC), displaybind, bindable] BSTR longDesc ();
    [propput, id (DISPID_IHTMLIMGELEMENT3_IE8_LONGDESC)] void ie8_longDesc (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT3_IE8_LONGDESC)] BSTR ie8_longDesc ();
    [propput, id (DISPID_IHTMLIMGELEMENT3_IE8_VRML)] void ie8_vrml (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT3_IE8_VRML)] BSTR ie8_vrml ();
    [propput, id (DISPID_IHTMLIMGELEMENT3_IE8_LOWSRC)] void ie8_lowsrc (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT3_IE8_LOWSRC)] BSTR ie8_lowsrc ();
    [propput, id (DISPID_IHTMLIMGELEMENT3_IE8_DYNSRC)] void ie8_dynsrc (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT3_IE8_DYNSRC)] BSTR ie8_dynsrc ();
    [propget, id (DISPID_IHTMLIMGELEMENT4_NATURALWIDTH)] long naturalWidth ();
    [propget, id (DISPID_IHTMLIMGELEMENT4_NATURALHEIGHT)] long naturalHeight ();
    [propput, id (DISPID_IHTMLMSIMGELEMENT_MSPLAYTODISABLED), displaybind, bindable] void msPlayToDisabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSIMGELEMENT_MSPLAYTODISABLED), displaybind, bindable] VARIANT_BOOL msPlayToDisabled ();
    [propput, id (DISPID_IHTMLMSIMGELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] void msPlayToPrimary (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSIMGELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] VARIANT_BOOL msPlayToPrimary ();
  };
  [noncreatable, uuid (3050f241-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLImg {
    [default] dispinterface DispHTMLImg;
    [source, default] dispinterface HTMLImgEvents;
    [source] dispinterface HTMLImgEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLImgElement;
    interface IHTMLImgElement2;
    interface IHTMLImgElement3;
    interface IHTMLImgElement4;
    interface IHTMLMSImgElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CImgElement;")
  [noncreatable, uuid (3050f38f-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLImageElementFactory {
    [default] interface IHTMLImageElementFactory;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CImageElementFactory;")
  typedef enum _bodyScroll {
    bodyScrollyes = 1,
    bodyScrollno = 2,
    bodyScrollauto = 4,
    bodyScrolldefault = 3,
    bodyScroll_Max = 0x7FFFFFFF
  } bodyScroll;
  [odl, oleautomation, dual, uuid (3050f1d8-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBodyElement : IDispatch {
    [propput, id (DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable] HRESULT background ([in] BSTR v);
    [propget, id (DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable] HRESULT background ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable] HRESULT bgProperties ([in] BSTR v);
    [propget, id (DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable] HRESULT bgProperties ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable] HRESULT leftMargin ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable] HRESULT leftMargin ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable] HRESULT topMargin ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable] HRESULT topMargin ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable] HRESULT rightMargin ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable] HRESULT rightMargin ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable] HRESULT bottomMargin ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable] HRESULT bottomMargin ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable] HRESULT noWrap ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable] HRESULT noWrap ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable] HRESULT bgColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable] HRESULT bgColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable] HRESULT text ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable] HRESULT text ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable] HRESULT link ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable] HRESULT link ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable] HRESULT vLink ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable] HRESULT vLink ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable] HRESULT aLink ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable] HRESULT aLink ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable] HRESULT onunload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable] HRESULT onunload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable] HRESULT scroll ([in] BSTR v);
    [propget, id (DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable] HRESULT scroll ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBODYELEMENT_ONSELECT), displaybind, bindable] HRESULT onselect ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_ONSELECT), displaybind, bindable] HRESULT onselect ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable] HRESULT onbeforeunload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable] HRESULT onbeforeunload ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLBODYELEMENT_CREATETEXTRANGE)] HRESULT createTextRange ([retval, out] IHTMLTxtRange **range);
  };
  [odl, oleautomation, dual, uuid (3050f5c5-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBodyElement2 : IDispatch {
    [propput, id (DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable] HRESULT onbeforeprint ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable] HRESULT onbeforeprint ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable] HRESULT onafterprint ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable] HRESULT onafterprint ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (30510422-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBodyElement3 : IDispatch {
    [propput, id (DISPID_IHTMLBODYELEMENT3_IE8_BACKGROUND), displaybind, bindable] HRESULT background ([in] BSTR v);
    [propget, id (DISPID_IHTMLBODYELEMENT3_IE8_BACKGROUND), displaybind, bindable] HRESULT background ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBODYELEMENT3_ONONLINE), displaybind, bindable] HRESULT ononline ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT3_ONONLINE), displaybind, bindable] HRESULT ononline ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT3_ONOFFLINE), displaybind, bindable] HRESULT onoffline ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT3_ONOFFLINE), displaybind, bindable] HRESULT onoffline ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT3_ONHASHCHANGE), displaybind, bindable] HRESULT onhashchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT3_ONHASHCHANGE), displaybind, bindable] HRESULT onhashchange ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (30510795-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBodyElement4 : IDispatch {
    [propput, id (DISPID_IHTMLBODYELEMENT4_ONMESSAGE), displaybind, bindable] HRESULT onmessage ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT4_ONMESSAGE), displaybind, bindable] HRESULT onmessage ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT4_ONSTORAGE), displaybind, bindable] HRESULT onstorage ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT4_ONSTORAGE), displaybind, bindable] HRESULT onstorage ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (30510822-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBodyElement5 : IDispatch {
    [propput, id (DISPID_IHTMLBODYELEMENT5_ONPOPSTATE), displaybind, bindable] HRESULT onpopstate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT5_ONPOPSTATE), displaybind, bindable] HRESULT onpopstate ([retval, out] VARIANT *p);
  };
  [hidden, uuid (3050f507-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLBody {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable] void background (BSTR v);
    [propget, id (DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable] BSTR background ();
    [propput, id (DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable] void bgProperties (BSTR v);
    [propget, id (DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable] BSTR bgProperties ();
    [propput, id (DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable] void leftMargin (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable] VARIANT leftMargin ();
    [propput, id (DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable] void topMargin (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable] VARIANT topMargin ();
    [propput, id (DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable] void rightMargin (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable] VARIANT rightMargin ();
    [propput, id (DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable] void bottomMargin (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable] VARIANT bottomMargin ();
    [propput, id (DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable] void noWrap (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable] VARIANT_BOOL noWrap ();
    [propput, id (DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable] void bgColor (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable] VARIANT bgColor ();
    [propput, id (DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable] void text (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable] VARIANT text ();
    [propput, id (DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable] void link (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable] VARIANT link ();
    [propput, id (DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable] void vLink (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable] VARIANT vLink ();
    [propput, id (DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable] void aLink (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable] VARIANT aLink ();
    [propput, id (DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable] void onunload (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable] VARIANT onunload ();
    [propput, id (DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable] void scroll (BSTR v);
    [propget, id (DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable] BSTR scroll ();
    [propput, id (DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable] void onbeforeunload (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable] VARIANT onbeforeunload ();
    [id (DISPID_IHTMLBODYELEMENT_CREATETEXTRANGE)] IHTMLTxtRange *createTextRange ();
    [propput, id (DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable] void onbeforeprint (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable] VARIANT onbeforeprint ();
    [propput, id (DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable] void onafterprint (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable] VARIANT onafterprint ();
    [propput, id (DISPID_IHTMLBODYELEMENT3_IE8_BACKGROUND), displaybind, bindable] void ie8_background (BSTR v);
    [propget, id (DISPID_IHTMLBODYELEMENT3_IE8_BACKGROUND), displaybind, bindable] BSTR ie8_background ();
    [propput, id (DISPID_IHTMLBODYELEMENT3_ONONLINE), displaybind, bindable] void ononline (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT3_ONONLINE), displaybind, bindable] VARIANT ononline ();
    [propput, id (DISPID_IHTMLBODYELEMENT3_ONOFFLINE), displaybind, bindable] void onoffline (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT3_ONOFFLINE), displaybind, bindable] VARIANT onoffline ();
    [propput, id (DISPID_IHTMLBODYELEMENT3_ONHASHCHANGE), displaybind, bindable] void onhashchange (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT3_ONHASHCHANGE), displaybind, bindable] VARIANT onhashchange ();
    [propput, id (DISPID_IHTMLBODYELEMENT4_ONMESSAGE), displaybind, bindable] void onmessage (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT4_ONMESSAGE), displaybind, bindable] VARIANT onmessage ();
    [propput, id (DISPID_IHTMLBODYELEMENT4_ONSTORAGE), displaybind, bindable] void onstorage (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT4_ONSTORAGE), displaybind, bindable] VARIANT onstorage ();
    [propput, id (DISPID_IHTMLBODYELEMENT5_ONPOPSTATE), displaybind, bindable] void onpopstate (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT5_ONPOPSTATE), displaybind, bindable] VARIANT onpopstate ();
  };
  [noncreatable, uuid (3050f24a-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLBody {
    [default] dispinterface DispHTMLBody;
    [source, default] dispinterface HTMLTextContainerEvents;
    [source] dispinterface HTMLTextContainerEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLBodyElement;
    interface IHTMLBodyElement2;
    interface IHTMLBodyElement3;
    interface IHTMLBodyElement4;
    interface IHTMLBodyElement5;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CBodyElement;")
  [odl, oleautomation, dual, uuid (3050f1d9-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFontElement : IDispatch {
    [propput, id (DISPID_IHTMLFONTELEMENT_COLOR), displaybind, bindable] HRESULT color ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFONTELEMENT_COLOR), displaybind, bindable] HRESULT color ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFONTELEMENT_FACE), displaybind, bindable] HRESULT face ([in] BSTR v);
    [propget, id (DISPID_IHTMLFONTELEMENT_FACE), displaybind, bindable] HRESULT face ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFONTELEMENT_SIZE), displaybind, bindable] HRESULT size ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFONTELEMENT_SIZE), displaybind, bindable] HRESULT size ([retval, out] VARIANT *p);
  };
  [hidden, uuid (3050f512-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLFontElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLFONTELEMENT_COLOR), displaybind, bindable] void color (VARIANT v);
    [propget, id (DISPID_IHTMLFONTELEMENT_COLOR), displaybind, bindable] VARIANT color ();
    [propput, id (DISPID_IHTMLFONTELEMENT_FACE), displaybind, bindable] void face (BSTR v);
    [propget, id (DISPID_IHTMLFONTELEMENT_FACE), displaybind, bindable] BSTR face ();
    [propput, id (DISPID_IHTMLFONTELEMENT_SIZE), displaybind, bindable] void size (VARIANT v);
    [propget, id (DISPID_IHTMLFONTELEMENT_SIZE), displaybind, bindable] VARIANT size ();
  };
  [noncreatable, uuid (3050f27b-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLFontElement {
    [default] dispinterface DispHTMLFontElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLFontElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CFontElement;")
  [hidden, uuid (3050f610-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLAnchorEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f29d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLAnchorEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
  };
  [odl, oleautomation, dual, uuid (3050f1da-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAnchorElement : IDispatch {
    [propput, id (DISPID_IHTMLANCHORELEMENT_HREF), displaybind, bindable] HRESULT href ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_HREF), displaybind, bindable] HRESULT href ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT_TARGET), displaybind, bindable] HRESULT target ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_TARGET), displaybind, bindable] HRESULT target ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT_REL), displaybind, bindable] HRESULT rel ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_REL), displaybind, bindable] HRESULT rel ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT_REV), displaybind, bindable] HRESULT rev ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_REV), displaybind, bindable] HRESULT rev ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT_URN), displaybind, bindable] HRESULT urn ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_URN), displaybind, bindable] HRESULT urn ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT_METHODS), displaybind, bindable] HRESULT Methods ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_METHODS), displaybind, bindable] HRESULT Methods ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT_HOST)] HRESULT host ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_HOST)] HRESULT host ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT_HOSTNAME)] HRESULT hostname ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_HOSTNAME)] HRESULT hostname ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT_PATHNAME)] HRESULT pathname ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_PATHNAME)] HRESULT pathname ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT_PORT)] HRESULT port ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_PORT)] HRESULT port ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT_PROTOCOL)] HRESULT protocol ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_PROTOCOL)] HRESULT protocol ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT_SEARCH)] HRESULT search ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_SEARCH)] HRESULT search ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT_HASH)] HRESULT hash ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_HASH)] HRESULT hash ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT_ONBLUR), displaybind, bindable] HRESULT onblur ([in] VARIANT v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_ONBLUR), displaybind, bindable] HRESULT onblur ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT_ONFOCUS), displaybind, bindable] HRESULT onfocus ([in] VARIANT v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_ONFOCUS), displaybind, bindable] HRESULT onfocus ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT_ACCESSKEY), displaybind, bindable] HRESULT accessKey ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_ACCESSKEY), displaybind, bindable] HRESULT accessKey ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLANCHORELEMENT_PROTOCOLLONG)] HRESULT protocolLong ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLANCHORELEMENT_MIMETYPE)] HRESULT mimeType ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLANCHORELEMENT_NAMEPROP)] HRESULT nameProp ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT_TABINDEX), displaybind, bindable] HRESULT tabIndex ([in] short v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_TABINDEX), displaybind, bindable] HRESULT tabIndex ([retval, out] short *p);
    [id (DISPID_IHTMLANCHORELEMENT_FOCUS)] HRESULT focus ();
    [id (DISPID_IHTMLANCHORELEMENT_BLUR)] HRESULT blur ();
  };
  [odl, oleautomation, dual, uuid (3050f825-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAnchorElement2 : IDispatch {
    [propput, id (DISPID_IHTMLANCHORELEMENT2_CHARSET), displaybind, bindable] HRESULT charset ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT2_CHARSET), displaybind, bindable] HRESULT charset ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT2_COORDS), displaybind, bindable] HRESULT coords ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT2_COORDS), displaybind, bindable] HRESULT coords ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT2_HREFLANG), displaybind, bindable] HRESULT hreflang ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT2_HREFLANG), displaybind, bindable] HRESULT hreflang ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT2_SHAPE), displaybind, bindable] HRESULT shape ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT2_SHAPE), displaybind, bindable] HRESULT shape ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT2_TYPE), displaybind, bindable] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT2_TYPE), displaybind, bindable] HRESULT type ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3051041d-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAnchorElement3 : IDispatch {
    [propput, id (DISPID_IHTMLANCHORELEMENT3_IE8_SHAPE)] HRESULT shape ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT3_IE8_SHAPE)] HRESULT shape ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT3_IE8_COORDS)] HRESULT coords ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT3_IE8_COORDS)] HRESULT coords ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT3_IE8_HREF)] HRESULT href ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT3_IE8_HREF)] HRESULT href ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f502-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLAnchorElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLANCHORELEMENT_HREF), displaybind, bindable] void href (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_HREF), displaybind, bindable] BSTR href ();
    [propput, id (DISPID_IHTMLANCHORELEMENT_TARGET), displaybind, bindable] void target (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_TARGET), displaybind, bindable] BSTR target ();
    [propput, id (DISPID_IHTMLANCHORELEMENT_REL), displaybind, bindable] void rel (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_REL), displaybind, bindable] BSTR rel ();
    [propput, id (DISPID_IHTMLANCHORELEMENT_REV), displaybind, bindable] void rev (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_REV), displaybind, bindable] BSTR rev ();
    [propput, id (DISPID_IHTMLANCHORELEMENT_URN), displaybind, bindable] void urn (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_URN), displaybind, bindable] BSTR urn ();
    [propput, id (DISPID_IHTMLANCHORELEMENT_METHODS), displaybind, bindable] void Methods (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_METHODS), displaybind, bindable] BSTR Methods ();
    [propput, id (DISPID_IHTMLANCHORELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propput, id (DISPID_IHTMLANCHORELEMENT_HOST)] void host (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_HOST)] BSTR host ();
    [propput, id (DISPID_IHTMLANCHORELEMENT_HOSTNAME)] void hostname (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_HOSTNAME)] BSTR hostname ();
    [propput, id (DISPID_IHTMLANCHORELEMENT_PATHNAME)] void pathname (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_PATHNAME)] BSTR pathname ();
    [propput, id (DISPID_IHTMLANCHORELEMENT_PORT)] void port (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_PORT)] BSTR port ();
    [propput, id (DISPID_IHTMLANCHORELEMENT_PROTOCOL)] void protocol (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_PROTOCOL)] BSTR protocol ();
    [propput, id (DISPID_IHTMLANCHORELEMENT_SEARCH)] void search (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_SEARCH)] BSTR search ();
    [propput, id (DISPID_IHTMLANCHORELEMENT_HASH)] void hash (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT_HASH)] BSTR hash ();
    [propget, id (DISPID_IHTMLANCHORELEMENT_PROTOCOLLONG)] BSTR protocolLong ();
    [propget, id (DISPID_IHTMLANCHORELEMENT_MIMETYPE)] BSTR mimeType ();
    [propget, id (DISPID_IHTMLANCHORELEMENT_NAMEPROP)] BSTR nameProp ();
    [propput, id (DISPID_IHTMLANCHORELEMENT2_CHARSET), displaybind, bindable] void charset (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT2_CHARSET), displaybind, bindable] BSTR charset ();
    [propput, id (DISPID_IHTMLANCHORELEMENT2_COORDS), displaybind, bindable] void coords (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT2_COORDS), displaybind, bindable] BSTR coords ();
    [propput, id (DISPID_IHTMLANCHORELEMENT2_HREFLANG), displaybind, bindable] void hreflang (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT2_HREFLANG), displaybind, bindable] BSTR hreflang ();
    [propput, id (DISPID_IHTMLANCHORELEMENT2_SHAPE), displaybind, bindable] void shape (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT2_SHAPE), displaybind, bindable] BSTR shape ();
    [propput, id (DISPID_IHTMLANCHORELEMENT2_TYPE), displaybind, bindable] void type (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT2_TYPE), displaybind, bindable] BSTR type ();
    [propput, id (DISPID_IHTMLANCHORELEMENT3_IE8_SHAPE)] void ie8_shape (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT3_IE8_SHAPE)] BSTR ie8_shape ();
    [propput, id (DISPID_IHTMLANCHORELEMENT3_IE8_COORDS)] void ie8_coords (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT3_IE8_COORDS)] BSTR ie8_coords ();
    [propput, id (DISPID_IHTMLANCHORELEMENT3_IE8_HREF)] void ie8_href (BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT3_IE8_HREF)] BSTR ie8_href ();
  };
  [noncreatable, uuid (3050f248-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLAnchorElement {
    [default] dispinterface DispHTMLAnchorElement;
    [source, default] dispinterface HTMLAnchorEvents;
    [source] dispinterface HTMLAnchorEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLAnchorElement;
    interface IHTMLAnchorElement2;
    interface IHTMLAnchorElement3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CAnchorElement;")
  [hidden, uuid (3050f61c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLLabelEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f329-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLLabelEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
  };
  [odl, oleautomation, dual, uuid (3050f32a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLLabelElement : IDispatch {
    [propput, id (DISPID_IHTMLLABELELEMENT_HTMLFOR), displaybind, bindable] HRESULT htmlFor ([in] BSTR v);
    [propget, id (DISPID_IHTMLLABELELEMENT_HTMLFOR), displaybind, bindable] HRESULT htmlFor ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLABELELEMENT_ACCESSKEY), displaybind, bindable] HRESULT accessKey ([in] BSTR v);
    [propget, id (DISPID_IHTMLLABELELEMENT_ACCESSKEY), displaybind, bindable] HRESULT accessKey ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f832-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLLabelElement2 : IDispatch {
    [propget, id (DISPID_IHTMLLABELELEMENT2_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
  };
  [hidden, uuid (3050f522-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLLabelElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLLABELELEMENT_HTMLFOR), displaybind, bindable] void htmlFor (BSTR v);
    [propget, id (DISPID_IHTMLLABELELEMENT_HTMLFOR), displaybind, bindable] BSTR htmlFor ();
    [propget, id (DISPID_IHTMLLABELELEMENT2_FORM)] IHTMLFormElement *form ();
  };
  [noncreatable, uuid (3050f32b-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLLabelElement {
    [default] dispinterface DispHTMLLabelElement;
    [source, default] dispinterface HTMLLabelEvents;
    [source] dispinterface HTMLLabelEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLLabelElement;
    interface IHTMLLabelElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CLabelElement;")
  [odl, oleautomation, dual, uuid (3050f20e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLListElement : IDispatch {
  };
  [odl, oleautomation, dual, uuid (3050f822-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLListElement2 : IDispatch {
    [propput, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] HRESULT compact ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] HRESULT compact ([retval, out] VARIANT_BOOL *p);
  };
  [hidden, uuid (3050f525-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLListElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] void compact (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] VARIANT_BOOL compact ();
  };
  [noncreatable, uuid (3050f272-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLListElement {
    [default] dispinterface DispHTMLListElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLListElement;
    interface IHTMLListElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CListElement;")
  [odl, oleautomation, dual, uuid (3050f1dd-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLUListElement : IDispatch {
    [propput, id (DISPID_IHTMLULISTELEMENT_COMPACT), displaybind, bindable] HRESULT compact ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLULISTELEMENT_COMPACT), displaybind, bindable] HRESULT compact ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLULISTELEMENT_TYPE), displaybind, bindable] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLULISTELEMENT_TYPE), displaybind, bindable] HRESULT type ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f538-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLUListElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] void compact (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] VARIANT_BOOL compact ();
    [propput, id (DISPID_IHTMLULISTELEMENT_TYPE), displaybind, bindable] void type (BSTR v);
    [propget, id (DISPID_IHTMLULISTELEMENT_TYPE), displaybind, bindable] BSTR type ();
  };
  [noncreatable, uuid (3050f269-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLUListElement {
    [default] dispinterface DispHTMLUListElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLListElement;
    interface IHTMLListElement2;
    interface IHTMLUListElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CUListElement;")
  [odl, oleautomation, dual, uuid (3050f1de-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLOListElement : IDispatch {
    [propput, id (DISPID_IHTMLOLISTELEMENT_COMPACT), displaybind, bindable] HRESULT compact ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOLISTELEMENT_COMPACT), displaybind, bindable] HRESULT compact ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLOLISTELEMENT_START), displaybind, bindable] HRESULT start ([in] long v);
    [propget, id (DISPID_IHTMLOLISTELEMENT_START), displaybind, bindable] HRESULT start ([retval, out] long *p);
    [propput, id (DISPID_IHTMLOLISTELEMENT_TYPE), displaybind, bindable] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLOLISTELEMENT_TYPE), displaybind, bindable] HRESULT type ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f52a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLOListElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] void compact (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] VARIANT_BOOL compact ();
    [propput, id (DISPID_IHTMLOLISTELEMENT_START), displaybind, bindable] void start (long v);
    [propget, id (DISPID_IHTMLOLISTELEMENT_START), displaybind, bindable] long start ();
    [propput, id (DISPID_IHTMLOLISTELEMENT_TYPE), displaybind, bindable] void type (BSTR v);
    [propget, id (DISPID_IHTMLOLISTELEMENT_TYPE), displaybind, bindable] BSTR type ();
  };
  [noncreatable, uuid (3050f270-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLOListElement {
    [default] dispinterface DispHTMLOListElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLListElement;
    interface IHTMLListElement2;
    interface IHTMLOListElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_COListElement;")
  [odl, oleautomation, dual, uuid (3050f1e0-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLLIElement : IDispatch {
    [propput, id (DISPID_IHTMLLIELEMENT_TYPE), displaybind, bindable] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLLIELEMENT_TYPE), displaybind, bindable] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLIELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] long v);
    [propget, id (DISPID_IHTMLLIELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] long *p);
  };
  [hidden, uuid (3050f523-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLLIElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLLIELEMENT_TYPE), displaybind, bindable] void type (BSTR v);
    [propget, id (DISPID_IHTMLLIELEMENT_TYPE), displaybind, bindable] BSTR type ();
    [propput, id (DISPID_IHTMLLIELEMENT_VALUE), displaybind, bindable] void value (long v);
    [propget, id (DISPID_IHTMLLIELEMENT_VALUE), displaybind, bindable] long value ();
  };
  [noncreatable, uuid (3050f273-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLLIElement {
    [default] dispinterface DispHTMLLIElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLLIElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CLIElement;")
  [odl, oleautomation, dual, uuid (3050f208-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBlockElement : IDispatch {
    [propput, id (DISPID_IHTMLBLOCKELEMENT_CLEAR), displaybind, bindable] HRESULT clear ([in] BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT_CLEAR), displaybind, bindable] HRESULT clear ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f823-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBlockElement2 : IDispatch {
    [propput, id (DISPID_IHTMLBLOCKELEMENT2_CITE), displaybind, bindable] HRESULT cite ([in] BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT2_CITE), displaybind, bindable] HRESULT cite ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBLOCKELEMENT2_WIDTH), displaybind, bindable] HRESULT width ([in] BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT2_WIDTH), displaybind, bindable] HRESULT width ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510494-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBlockElement3 : IDispatch {
    [propput, id (DISPID_IHTMLBLOCKELEMENT3_IE8_CITE)] HRESULT cite ([in] BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT3_IE8_CITE)] HRESULT cite ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f506-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLBlockElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLBLOCKELEMENT_CLEAR), displaybind, bindable] void clear (BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT_CLEAR), displaybind, bindable] BSTR clear ();
    [propput, id (DISPID_IHTMLBLOCKELEMENT2_CITE), displaybind, bindable] void cite (BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT2_CITE), displaybind, bindable] BSTR cite ();
    [propput, id (DISPID_IHTMLBLOCKELEMENT2_WIDTH), displaybind, bindable] void width (BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT2_WIDTH), displaybind, bindable] BSTR width ();
    [propput, id (DISPID_IHTMLBLOCKELEMENT3_IE8_CITE)] void ie8_cite (BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT3_IE8_CITE)] BSTR ie8_cite ();
  };
  [noncreatable, uuid (3050f281-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLBlockElement {
    [default] dispinterface DispHTMLBlockElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLBlockElement;
    interface IHTMLBlockElement2;
    interface IHTMLBlockElement3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CBlockElement;")
  [odl, oleautomation, dual, uuid (3050f200-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDivElement : IDispatch {
    [propput, id (DISPID_IHTMLDIVELEMENT_ALIGN), displaybind, bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLDIVELEMENT_ALIGN), displaybind, bindable] HRESULT align ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDIVELEMENT_NOWRAP), displaybind, bindable] HRESULT noWrap ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDIVELEMENT_NOWRAP), displaybind, bindable] HRESULT noWrap ([retval, out] VARIANT_BOOL *p);
  };
  [hidden, uuid (3050f50c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDivElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLDIVELEMENT_ALIGN), displaybind, bindable] void align (BSTR v);
    [propget, id (DISPID_IHTMLDIVELEMENT_ALIGN), displaybind, bindable] BSTR align ();
    [propput, id (DISPID_IHTMLDIVELEMENT_NOWRAP), displaybind, bindable] void noWrap (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDIVELEMENT_NOWRAP), displaybind, bindable] VARIANT_BOOL noWrap ();
  };
  [noncreatable, uuid (3050f27e-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDivElement {
    [default] dispinterface DispHTMLDivElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLTextContainerEvents;
    [source] dispinterface HTMLElementEvents2;
    [source] dispinterface HTMLTextContainerEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLDivElement;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDivElement;")
  [odl, oleautomation, dual, uuid (3050f1f2-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDDElement : IDispatch {
    [propput, id (DISPID_IHTMLDDELEMENT_NOWRAP), displaybind, bindable] HRESULT noWrap ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDDELEMENT_NOWRAP), displaybind, bindable] HRESULT noWrap ([retval, out] VARIANT_BOOL *p);
  };
  [hidden, uuid (3050f50b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDDElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLDDELEMENT_NOWRAP), displaybind, bindable] void noWrap (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDDELEMENT_NOWRAP), displaybind, bindable] VARIANT_BOOL noWrap ();
  };
  [noncreatable, uuid (3050f27f-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDDElement {
    [default] dispinterface DispHTMLDDElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLDDElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDDElement;")
  [odl, oleautomation, dual, uuid (3050f1f3-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDTElement : IDispatch {
    [propput, id (DISPID_IHTMLDTELEMENT_NOWRAP), displaybind, bindable] HRESULT noWrap ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDTELEMENT_NOWRAP), displaybind, bindable] HRESULT noWrap ([retval, out] VARIANT_BOOL *p);
  };
  [hidden, uuid (3050f50d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDTElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLDTELEMENT_NOWRAP), displaybind, bindable] void noWrap (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDTELEMENT_NOWRAP), displaybind, bindable] VARIANT_BOOL noWrap ();
  };
  [noncreatable, uuid (3050f27c-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDTElement {
    [default] dispinterface DispHTMLDTElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLDTElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDTElement;")
  [odl, oleautomation, dual, uuid (3050f1f0-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBRElement : IDispatch {
    [propput, id (DISPID_IHTMLBRELEMENT_CLEAR), displaybind, bindable] HRESULT clear ([in] BSTR v);
    [propget, id (DISPID_IHTMLBRELEMENT_CLEAR), displaybind, bindable] HRESULT clear ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f53a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLBRElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLBRELEMENT_CLEAR), displaybind, bindable] void clear (BSTR v);
    [propget, id (DISPID_IHTMLBRELEMENT_CLEAR), displaybind, bindable] BSTR clear ();
  };
  [noncreatable, uuid (3050f280-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLBRElement {
    [default] dispinterface DispHTMLBRElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLBRElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CBRElement;")
  [odl, oleautomation, dual, uuid (3050f1f1-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDListElement : IDispatch {
    [propput, id (DISPID_IHTMLDLISTELEMENT_COMPACT), bindable] HRESULT compact ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDLISTELEMENT_COMPACT), bindable] HRESULT compact ([retval, out] VARIANT_BOOL *p);
  };
  [hidden, uuid (3050f53b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDListElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] void compact (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] VARIANT_BOOL compact ();
  };
  [noncreatable, uuid (3050f27d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDListElement {
    [default] dispinterface DispHTMLDListElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLListElement;
    interface IHTMLListElement2;
    interface IHTMLDListElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDListElement;")
  [odl, oleautomation, dual, uuid (3050f1f4-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLHRElement : IDispatch {
    [propput, id (DISPID_IHTMLHRELEMENT_ALIGN), displaybind, bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLHRELEMENT_ALIGN), displaybind, bindable] HRESULT align ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLHRELEMENT_COLOR), displaybind, bindable] HRESULT color ([in] VARIANT v);
    [propget, id (DISPID_IHTMLHRELEMENT_COLOR), displaybind, bindable] HRESULT color ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLHRELEMENT_NOSHADE), bindable] HRESULT noShade ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLHRELEMENT_NOSHADE), bindable] HRESULT noShade ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLHRELEMENT_WIDTH)] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLHRELEMENT_WIDTH)] HRESULT width ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLHRELEMENT_SIZE)] HRESULT size ([in] VARIANT v);
    [propget, id (DISPID_IHTMLHRELEMENT_SIZE)] HRESULT size ([retval, out] VARIANT *p);
  };
  [hidden, uuid (3050f53d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLHRElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLHRELEMENT_ALIGN), displaybind, bindable] void align (BSTR v);
    [propget, id (DISPID_IHTMLHRELEMENT_ALIGN), displaybind, bindable] BSTR align ();
    [propput, id (DISPID_IHTMLHRELEMENT_COLOR), displaybind, bindable] void color (VARIANT v);
    [propget, id (DISPID_IHTMLHRELEMENT_COLOR), displaybind, bindable] VARIANT color ();
    [propput, id (DISPID_IHTMLHRELEMENT_NOSHADE), bindable] void noShade (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLHRELEMENT_NOSHADE), bindable] VARIANT_BOOL noShade ();
    [propput, id (DISPID_IHTMLHRELEMENT_WIDTH)] void width (VARIANT v);
    [propget, id (DISPID_IHTMLHRELEMENT_WIDTH)] VARIANT width ();
    [propput, id (DISPID_IHTMLHRELEMENT_SIZE)] void size (VARIANT v);
    [propget, id (DISPID_IHTMLHRELEMENT_SIZE)] VARIANT size ();
  };
  [noncreatable, uuid (3050f252-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLHRElement {
    [default] dispinterface DispHTMLHRElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLHRElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CHRElement;")
  [odl, oleautomation, dual, uuid (3050f1f5-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLParaElement : IDispatch {
    [propput, id (DISPID_IHTMLPARAELEMENT_ALIGN), bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLPARAELEMENT_ALIGN), bindable] HRESULT align ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f52c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLParaElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLBLOCKELEMENT_CLEAR), displaybind, bindable] void clear (BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT_CLEAR), displaybind, bindable] BSTR clear ();
    [propput, id (DISPID_IHTMLPARAELEMENT_ALIGN), bindable] void align (BSTR v);
    [propget, id (DISPID_IHTMLPARAELEMENT_ALIGN), bindable] BSTR align ();
  };
  [noncreatable, uuid (3050f26f-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLParaElement {
    [default] dispinterface DispHTMLParaElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLBlockElement;
    interface IHTMLParaElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CParaElement;")
  [odl, oleautomation, dual, uuid (3050f21f-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLElementCollection : IDispatch {
    [id (DISPID_IHTMLELEMENTCOLLECTION_TOSTRING)] HRESULT toString ([retval, out] BSTR *String);
    [propput, id (DISPID_IHTMLELEMENTCOLLECTION_LENGTH)] HRESULT length ([in] long v);
    [propget, id (DISPID_IHTMLELEMENTCOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLELEMENTCOLLECTION__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLELEMENTCOLLECTION_ITEM)] HRESULT item ([optional, in] VARIANT name,[optional, in] VARIANT index,[retval, out] IDispatch **pdisp);
    [id (DISPID_IHTMLELEMENTCOLLECTION_TAGS)] HRESULT tags ([in] VARIANT tagName,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (3050f5ee-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLElementCollection2 : IDispatch {
    [id (DISPID_IHTMLELEMENTCOLLECTION2_URNS)] HRESULT urns ([in] VARIANT urn,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (3050f835-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLElementCollection3 : IDispatch {
    [id (DISPID_IHTMLELEMENTCOLLECTION3_NAMEDITEM)] HRESULT namedItem ([in] BSTR name,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (30510425-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLElementCollection4 : IDispatch {
    [propget, id (DISPID_IHTMLELEMENTCOLLECTION4_IE8_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLELEMENTCOLLECTION4_IE8_ITEM)] HRESULT item ([in] long index,[retval, out] IHTMLElement2 **pNode);
    [id (DISPID_IHTMLELEMENTCOLLECTION4_IE8_NAMEDITEM)] HRESULT namedItem ([in] BSTR name,[retval, out] IHTMLElement2 **pNode);
  };
  [hidden, uuid (3050f56b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLElementCollection {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENTCOLLECTION_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENTCOLLECTION_LENGTH)] void length (long v);
    [propget, id (DISPID_IHTMLELEMENTCOLLECTION_LENGTH)] long length ();
    [propget, id (DISPID_IHTMLELEMENTCOLLECTION__NEWENUM), hidden, restricted] IUnknown *_newEnum ();
    [id (DISPID_IHTMLELEMENTCOLLECTION_ITEM)] IDispatch *item ([optional, in] VARIANT name,[optional, in] VARIANT index);
    [id (DISPID_IHTMLELEMENTCOLLECTION_TAGS)] IDispatch *tags ([in] VARIANT tagName);
    [id (DISPID_IHTMLELEMENTCOLLECTION2_URNS)] IDispatch *urns ([in] VARIANT urn);
    [id (DISPID_IHTMLELEMENTCOLLECTION3_NAMEDITEM)] IDispatch *namedItem ([in] BSTR name);
    [propget, id (DISPID_IHTMLELEMENTCOLLECTION4_IE8_LENGTH)] long ie8_length ();
    [id (DISPID_IHTMLELEMENTCOLLECTION4_IE8_ITEM)] IHTMLElement2 *ie8_item ([in] long index);
    [id (DISPID_IHTMLELEMENTCOLLECTION4_IE8_NAMEDITEM)] IHTMLElement2 *ie8_namedItem ([in] BSTR name);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f4cb-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLElementCollection {
    [default] dispinterface DispHTMLElementCollection;
    interface IHTMLElementCollection;
    interface IHTMLElementCollection2;
    interface IHTMLElementCollection3;
    interface IHTMLElementCollection4;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CElementCollection;")
  [odl, oleautomation, dual, uuid (3050f1f6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLHeaderElement : IDispatch {
    [propput, id (DISPID_IHTMLHEADERELEMENT_ALIGN), bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLHEADERELEMENT_ALIGN), bindable] HRESULT align ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f515-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLHeaderElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLBLOCKELEMENT_CLEAR), displaybind, bindable] void clear (BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT_CLEAR), displaybind, bindable] BSTR clear ();
    [propput, id (DISPID_IHTMLHEADERELEMENT_ALIGN), bindable] void align (BSTR v);
    [propget, id (DISPID_IHTMLHEADERELEMENT_ALIGN), bindable] BSTR align ();
  };
  [noncreatable, uuid (3050f27a-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLHeaderElement {
    [default] dispinterface DispHTMLHeaderElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLBlockElement;
    interface IHTMLHeaderElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CHeaderElement;")
  [hidden, uuid (3050f622-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLSelectElementEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLSELECTELEMENTEVENTS2_ONCHANGE)] void onchange ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f302-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLSelectElementEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
    [id (DISPID_HTMLSELECTELEMENTEVENTS_ONCHANGE)] void onchange ();
  };
  typedef enum _htmlSelectType {
    htmlSelectTypeSelectOne = 1,
    htmlSelectTypeSelectMultiple = 2,
    htmlSelectType_Max = 0x7FFFFFFF
  } htmlSelectType;

  typedef enum _htmlSelectExFlag {
    htmlSelectExFlagNone = 0,
    htmlSelectExFlagHideSelectionInDesign = 0x1,
    htmlSelectExFlag_Max = 0x7FFFFFFF
  } htmlSelectExFlag;
  interface IHTMLOptionElement;
  [object, pointer_default (unique), uuid (3050f2d1-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSelectElementEx : IUnknown {
    HRESULT ShowDropdown ([in] BOOL fShow);
    HRESULT SetSelectExFlags ([in] DWORD lFlags);
    HRESULT GetSelectExFlags ([retval, out] DWORD *pFlags);
    HRESULT GetDropdownOpen ([retval, out] BOOL *pfOpen);
  };
  [odl, oleautomation, dual, uuid (3050f244-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSelectElement : IDispatch {
    [propput, id (DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable] HRESULT size ([in] long v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable] HRESULT size ([retval, out] long *p);
    [propput, id (DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable] HRESULT multiple ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable] HRESULT multiple ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLSELECTELEMENT_OPTIONS)] HRESULT options ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable] HRESULT onchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable] HRESULT onchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)] HRESULT selectedIndex ([in] long v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)] HRESULT selectedIndex ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSELECTELEMENT_TYPE), displaybind, bindable] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSELECTELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLSELECTELEMENT_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
    [id (DISPID_IHTMLSELECTELEMENT_ADD)] HRESULT add ([in] IHTMLElement *element,[optional, in] VARIANT before);
    [id (DISPID_IHTMLSELECTELEMENT_REMOVE)] HRESULT remove ([defaultvalue (-1), in] long index);
    [propput, id (DISPID_IHTMLSELECTELEMENT_LENGTH)] HRESULT length ([in] long v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_LENGTH)] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSELECTELEMENT__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLSELECTELEMENT_ITEM)] HRESULT item ([optional, in] VARIANT name,[optional, in] VARIANT index,[retval, out] IDispatch **pdisp);
    [id (DISPID_IHTMLSELECTELEMENT_TAGS)] HRESULT tags ([in] VARIANT tagName,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (3050f5ed-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSelectElement2 : IDispatch {
    [id (DISPID_IHTMLSELECTELEMENT2_URNS)] HRESULT urns ([in] VARIANT urn,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (3050f838-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSelectElement4 : IDispatch {
    [id (DISPID_IHTMLSELECTELEMENT4_NAMEDITEM)] HRESULT namedItem ([in] BSTR name,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (3051049d-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSelectElement5 : IDispatch {
    [id (DISPID_IHTMLSELECTELEMENT5_IE8_ADD)] HRESULT add ([in] IHTMLOptionElement *pElem,[in] VARIANT *pvarBefore);
  };
  [odl, oleautomation, dual, uuid (30510760-98b6-11cf-bb82-00aa00bdce0b)] interface IHTMLSelectElement6 : IDispatch {
    [id (DISPID_IHTMLSELECTELEMENT6_IE9_ADD)] HRESULT add ([in] IHTMLOptionElement *pElem,[in] VARIANT *pvarBefore);
    [propput, id (DISPID_IHTMLSELECTELEMENT6_IE9_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLSELECTELEMENT6_IE9_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f531-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLSelectElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable] void size (long v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable] long size ();
    [propput, id (DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable] void multiple (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable] VARIANT_BOOL multiple ();
    [propput, id (DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propget, id (DISPID_IHTMLSELECTELEMENT_OPTIONS)] IDispatch *options ();
    [propput, id (DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)] void selectedIndex (long v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)] long selectedIndex ();
    [propget, id (DISPID_IHTMLSELECTELEMENT_TYPE), displaybind, bindable] BSTR type ();
    [propput, id (DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable] void value (BSTR v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable] BSTR value ();
    [propget, id (DISPID_IHTMLSELECTELEMENT_FORM)] IHTMLFormElement *form ();
    [id (DISPID_IHTMLSELECTELEMENT_ADD)] void add ([in] IHTMLElement *element,[optional, in] VARIANT before);
    [id (DISPID_IHTMLSELECTELEMENT_REMOVE)] void remove ([defaultvalue (-1), in] long index);
    [propput, id (DISPID_IHTMLSELECTELEMENT_LENGTH)] void length (long v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_LENGTH)] long length ();
    [propget, id (DISPID_IHTMLSELECTELEMENT__NEWENUM), hidden, restricted] IUnknown *_newEnum ();
    [id (DISPID_IHTMLSELECTELEMENT_ITEM)] IDispatch *item ([optional, in] VARIANT name,[optional, in] VARIANT index);
    [id (DISPID_IHTMLSELECTELEMENT_TAGS)] IDispatch *tags ([in] VARIANT tagName);
    [id (DISPID_IHTMLSELECTELEMENT2_URNS)] IDispatch *urns ([in] VARIANT urn);
    [id (DISPID_IHTMLSELECTELEMENT4_NAMEDITEM)] IDispatch *namedItem ([in] BSTR name);
    [id (DISPID_IHTMLSELECTELEMENT5_IE8_ADD)] void ie8_add ([in] IHTMLOptionElement *pElem,[in] VARIANT *pvarBefore);
    [id (DISPID_IHTMLSELECTELEMENT6_IE9_ADD)] void ie9_add ([in] IHTMLOptionElement *pElem,[in] VARIANT *pvarBefore);
    [propput, id (DISPID_IHTMLSELECTELEMENT6_IE9_VALUE), displaybind, bindable] void ie9_value (BSTR v);
    [propget, id (DISPID_IHTMLSELECTELEMENT6_IE9_VALUE), displaybind, bindable] BSTR ie9_value ();
  };
  [noncreatable, uuid (3050f245-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLSelectElement {
    [default] dispinterface DispHTMLSelectElement;
    [source, default] dispinterface HTMLSelectElementEvents;
    [source] dispinterface HTMLSelectElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLSelectElement;
    interface IHTMLSelectElement2;
    interface IHTMLSelectElement4;
    interface IHTMLSelectElement5;
    interface IHTMLSelectElement6;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSelectElement;")
  [hidden, uuid (3050f597-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLWndSelectElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable] void size (long v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable] long size ();
    [propput, id (DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable] void multiple (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable] VARIANT_BOOL multiple ();
    [propput, id (DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propget, id (DISPID_IHTMLSELECTELEMENT_OPTIONS)] IDispatch *options ();
    [propput, id (DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)] void selectedIndex (long v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)] long selectedIndex ();
    [propget, id (DISPID_IHTMLSELECTELEMENT_TYPE), displaybind, bindable] BSTR type ();
    [propput, id (DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable] void value (BSTR v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable] BSTR value ();
    [propget, id (DISPID_IHTMLSELECTELEMENT_FORM)] IHTMLFormElement *form ();
    [id (DISPID_IHTMLSELECTELEMENT_ADD)] void add ([in] IHTMLElement *element,[optional, in] VARIANT before);
    [id (DISPID_IHTMLSELECTELEMENT_REMOVE)] void remove ([defaultvalue (-1), in] long index);
    [propput, id (DISPID_IHTMLSELECTELEMENT_LENGTH)] void length (long v);
    [propget, id (DISPID_IHTMLSELECTELEMENT_LENGTH)] long length ();
    [propget, id (DISPID_IHTMLSELECTELEMENT__NEWENUM), hidden, restricted] IUnknown *_newEnum ();
    [id (DISPID_IHTMLSELECTELEMENT_ITEM)] IDispatch *item ([optional, in] VARIANT name,[optional, in] VARIANT index);
    [id (DISPID_IHTMLSELECTELEMENT_TAGS)] IDispatch *tags ([in] VARIANT tagName);
    [id (DISPID_IHTMLSELECTELEMENT2_URNS)] IDispatch *urns ([in] VARIANT urn);
    [id (DISPID_IHTMLSELECTELEMENT4_NAMEDITEM)] IDispatch *namedItem ([in] BSTR name);
  };
  [noncreatable, uuid (3050f2cf-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLWndSelectElement {
    [default] dispinterface DispHTMLWndSelectElement;
    [source, default] dispinterface HTMLSelectElementEvents;
    [source] dispinterface HTMLSelectElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLSelectElement;
    interface IHTMLSelectElement2;
    interface IHTMLSelectElement4;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CWndSelectElement;")
  typedef enum _htmlSelection {
    htmlSelectionNone = 0,
    htmlSelectionText = 1,
    htmlSelectionControl = 2,
    htmlSelectionTable = 3,
    htmlSelection_Max = 0x7FFFFFFF
  } htmlSelection;
  [odl, oleautomation, dual, uuid (3050f25a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSelectionObject : IDispatch {
    [id (DISPID_IHTMLSELECTIONOBJECT_CREATERANGE)] HRESULT createRange ([retval, out] IDispatch **range);
    [id (DISPID_IHTMLSELECTIONOBJECT_EMPTY)] HRESULT empty ();
    [id (DISPID_IHTMLSELECTIONOBJECT_CLEAR)] HRESULT clear ();
    [propget, id (DISPID_IHTMLSELECTIONOBJECT_TYPE)] HRESULT type ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f7ec-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSelectionObject2 : IDispatch {
    [id (DISPID_IHTMLSELECTIONOBJECT2_CREATERANGECOLLECTION)] HRESULT createRangeCollection ([retval, out] IDispatch **rangeCollection);
    [propget, id (DISPID_IHTMLSELECTIONOBJECT2_TYPEDETAIL)] HRESULT typeDetail ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305104b6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSelection : IDispatch {
    [propget, id (DISPID_IHTMLSELECTION_ANCHORNODE)] HRESULT anchorNode ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLSELECTION_ANCHOROFFSET)] HRESULT anchorOffset ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSELECTION_FOCUSNODE)] HRESULT focusNode ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLSELECTION_FOCUSOFFSET)] HRESULT focusOffset ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSELECTION_ISCOLLAPSED)] HRESULT isCollapsed ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLSELECTION_COLLAPSE)] HRESULT collapse ([in] IDispatch *parentNode,[in] long offfset);
    [id (DISPID_IHTMLSELECTION_COLLAPSETOSTART)] HRESULT collapseToStart ();
    [id (DISPID_IHTMLSELECTION_COLLAPSETOEND)] HRESULT collapseToEnd ();
    [id (DISPID_IHTMLSELECTION_SELECTALLCHILDREN)] HRESULT selectAllChildren ([in] IDispatch *parentNode);
    [id (DISPID_IHTMLSELECTION_DELETEFROMDOCUMENT)] HRESULT deleteFromDocument ();
    [propget, id (DISPID_IHTMLSELECTION_RANGECOUNT)] HRESULT rangeCount ([retval, out] long *p);
    [id (DISPID_IHTMLSELECTION_GETRANGEAT)] HRESULT getRangeAt ([in] long index,[retval, out] IHTMLDOMRange **ppRange);
    [id (DISPID_IHTMLSELECTION_ADDRANGE)] HRESULT addRange ([in] IDispatch *range);
    [id (DISPID_IHTMLSELECTION_REMOVERANGE)] HRESULT removeRange ([in] IDispatch *range);
    [id (DISPID_IHTMLSELECTION_REMOVEALLRANGES)] HRESULT removeAllRanges ();
    [id (DISPID_IHTMLSELECTION_TOSTRING)] HRESULT toString ([retval, out] BSTR *pSelectionString);
  };
  [odl, oleautomation, dual, uuid (3050f211-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLOptionElement : IDispatch {
    [propput, id (DISPID_IHTMLOPTIONELEMENT_SELECTED)] HRESULT selected ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT_SELECTED)] HRESULT selected ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLOPTIONELEMENT_VALUE)] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT_VALUE)] HRESULT value ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)] HRESULT defaultSelected ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)] HRESULT defaultSelected ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLOPTIONELEMENT_INDEX)] HRESULT index ([in] LONG v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT_INDEX)] HRESULT index ([retval, out] LONG *p);
    [propput, id (DISPID_IHTMLOPTIONELEMENT_TEXT)] HRESULT text ([in] BSTR v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT_TEXT)] HRESULT text ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLOPTIONELEMENT_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
  };
  [odl, oleautomation, dual, uuid (3050f820-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLOptionElement3 : IDispatch {
    [propput, id (DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable] HRESULT label ([in] BSTR v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable] HRESULT label ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305107b4-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLOptionElement4 : IDispatch {
    [propput, id (DISPID_IHTMLOPTIONELEMENT4_IE9_VALUE)] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT4_IE9_VALUE)] HRESULT value ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f38c-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLOptionElementFactory : IDispatch {
    [id (DISPID_IHTMLOPTIONELEMENTFACTORY_CREATE)] HRESULT create ([optional, in] VARIANT text,[optional, in] VARIANT value,[optional, in] VARIANT defaultselected,[optional, in] VARIANT selected,[retval, out] IHTMLOptionElement **);
  };
  [hidden, uuid (3050f52b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLOptionElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLOPTIONELEMENT_SELECTED)] void selected (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT_SELECTED)] VARIANT_BOOL selected ();
    [propput, id (DISPID_IHTMLOPTIONELEMENT_VALUE)] void value (BSTR v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT_VALUE)] BSTR value ();
    [propput, id (DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)] void defaultSelected (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)] VARIANT_BOOL defaultSelected ();
    [propput, id (DISPID_IHTMLOPTIONELEMENT_INDEX)] void index (LONG v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT_INDEX)] LONG index ();
    [propput, id (DISPID_IHTMLOPTIONELEMENT_TEXT)] void text (BSTR v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT_TEXT)] BSTR text ();
    [propget, id (DISPID_IHTMLOPTIONELEMENT_FORM)] IHTMLFormElement *form ();
    [propput, id (DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable] void label (BSTR v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable] BSTR label ();
    [propput, id (DISPID_IHTMLOPTIONELEMENT4_IE9_VALUE)] void ie9_value (BSTR v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT4_IE9_VALUE)] BSTR ie9_value ();
  };
  [noncreatable, uuid (3050f24d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLOptionElement {
    [default] dispinterface DispHTMLOptionElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLOptionElement;
    interface IHTMLOptionElement3;
    interface IHTMLOptionElement4;
  };
  cpp_quote("EXTERN_C const GUID CLSID_COptionElement;")
  [noncreatable, uuid (3050f38d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLOptionElementFactory {
    [default] interface IHTMLOptionElementFactory;
  };
  cpp_quote("EXTERN_C const GUID CLSID_COptionElementFactory;")
  [hidden, uuid (3050f598-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLWndOptionElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLOPTIONELEMENT_SELECTED)] void selected (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT_SELECTED)] VARIANT_BOOL selected ();
    [propput, id (DISPID_IHTMLOPTIONELEMENT_VALUE)] void value (BSTR v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT_VALUE)] BSTR value ();
    [propput, id (DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)] void defaultSelected (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)] VARIANT_BOOL defaultSelected ();
    [propput, id (DISPID_IHTMLOPTIONELEMENT_INDEX)] void index (LONG v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT_INDEX)] LONG index ();
    [propput, id (DISPID_IHTMLOPTIONELEMENT_TEXT)] void text (BSTR v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT_TEXT)] BSTR text ();
    [propget, id (DISPID_IHTMLOPTIONELEMENT_FORM)] IHTMLFormElement *form ();
    [propput, id (DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable] void label (BSTR v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable] BSTR label ();
  };
  [noncreatable, uuid (3050f2d0-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLWndOptionElement {
    [default] dispinterface DispHTMLWndOptionElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLOptionElement;
    interface IHTMLOptionElement3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CWndOptionElement;")
  [hidden, uuid (3050f617-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLButtonElementEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f2b3-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLButtonElementEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
  };
  [hidden, uuid (3050f618-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLInputTextElementEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONCHANGE)] VARIANT_BOOL onchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONSELECT)] void onselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONABORT)] void onabort ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f619-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLOptionButtonElementEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONCHANGE)] VARIANT_BOOL onchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONSELECT)] void onselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONABORT)] void onabort ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f61a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLInputFileElementEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONCHANGE)] VARIANT_BOOL onchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONSELECT)] void onselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONABORT)] void onabort ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f61b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLInputImageEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTIMAGEEVENTS2_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTIMAGEEVENTS2_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTIMAGEEVENTS2_ONABORT)] void onabort ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f2a7-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLInputTextElementEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONCHANGE)] VARIANT_BOOL onchange ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONSELECT)] void onselect ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONLOAD)] void onload ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONERROR)] void onerror ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONABORT)] void onabort ();
  };
  [hidden, uuid (3050f2bd-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLOptionButtonElementEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONCHANGE)] VARIANT_BOOL onchange ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONSELECT)] void onselect ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONLOAD)] void onload ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONERROR)] void onerror ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONABORT)] void onabort ();
  };
  [hidden, uuid (3050f2af-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLInputFileElementEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONCHANGE)] VARIANT_BOOL onchange ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONSELECT)] void onselect ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONLOAD)] void onload ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONERROR)] void onerror ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONABORT)] void onabort ();
  };
  [hidden, uuid (3050f2c3-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLInputImageEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
    [id (DISPID_HTMLINPUTIMAGEEVENTS_ONLOAD)] void onload ();
    [id (DISPID_HTMLINPUTIMAGEEVENTS_ONERROR)] void onerror ();
    [id (DISPID_HTMLINPUTIMAGEEVENTS_ONABORT)] void onabort ();
  };
  [odl, oleautomation, dual, uuid (3050f5d2-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLInputElement : IDispatch {
    [propput, id (DISPID_IHTMLINPUTELEMENT_TYPE)] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_STATUS)] HRESULT status ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_STATUS)] HRESULT status ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLINPUTELEMENT_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable] HRESULT size ([in] long v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable] HRESULT size ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable] HRESULT maxLength ([in] long v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable] HRESULT maxLength ([retval, out] long *p);
    [id (DISPID_IHTMLINPUTELEMENT_SELECT)] HRESULT select ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable] HRESULT onchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable] HRESULT onchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable] HRESULT onselect ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable] HRESULT onselect ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] HRESULT defaultValue ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] HRESULT defaultValue ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable] HRESULT readOnly ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable] HRESULT readOnly ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLINPUTELEMENT_CREATETEXTRANGE)] HRESULT createTextRange ([retval, out] IHTMLTxtRange **range);
    [propput, id (DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable] HRESULT indeterminate ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable] HRESULT indeterminate ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable] HRESULT defaultChecked ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable] HRESULT defaultChecked ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_CHECKED), bindable] HRESULT checked ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_CHECKED), bindable] HRESULT checked ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable] HRESULT border ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable] HRESULT border ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable] HRESULT vspace ([in] long v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable] HRESULT vspace ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable] HRESULT hspace ([in] long v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable] HRESULT hspace ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable] HRESULT alt ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable] HRESULT alt ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable] HRESULT lowsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable] HRESULT lowsrc ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable] HRESULT vrml ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable] HRESULT vrml ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable] HRESULT dynsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable] HRESULT dynsrc ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLINPUTELEMENT_READYSTATE)] HRESULT readyState ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLINPUTELEMENT_COMPLETE)] HRESULT complete ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable] HRESULT loop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable] HRESULT loop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable] HRESULT align ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable] HRESULT onerror ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable] HRESULT onabort ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable] HRESULT onabort ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_WIDTH)] HRESULT width ([in] long v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_WIDTH)] HRESULT width ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_HEIGHT)] HRESULT height ([in] long v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_HEIGHT)] HRESULT height ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable] HRESULT start ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable] HRESULT start ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f821-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLInputElement2 : IDispatch {
    [propput, id (DISPID_IHTMLINPUTELEMENT2_ACCEPT), displaybind, bindable] HRESULT accept ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT2_ACCEPT), displaybind, bindable] HRESULT accept ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT2_USEMAP), displaybind, bindable] HRESULT useMap ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT2_USEMAP), displaybind, bindable] HRESULT useMap ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510435-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLInputElement3 : IDispatch {
    [propput, id (DISPID_IHTMLINPUTELEMENT3_IE8_SRC)] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT3_IE8_SRC)] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT3_IE8_LOWSRC)] HRESULT lowsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT3_IE8_LOWSRC)] HRESULT lowsrc ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT3_IE8_VRML)] HRESULT vrml ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT3_IE8_VRML)] HRESULT vrml ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT3_IE8_DYNSRC)] HRESULT dynsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT3_IE8_DYNSRC)] HRESULT dynsrc ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f2b2-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLInputButtonElement : IDispatch {
    [propget, id (DISPID_IHTMLINPUTBUTTONELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTBUTTONELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTBUTTONELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTBUTTONELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTBUTTONELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTBUTTONELEMENT_STATUS)] HRESULT status ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTBUTTONELEMENT_STATUS)] HRESULT status ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTBUTTONELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTBUTTONELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLINPUTBUTTONELEMENT_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_CREATETEXTRANGE)] HRESULT createTextRange ([retval, out] IHTMLTxtRange **range);
  };
  [odl, oleautomation, dual, uuid (3050f2a4-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLInputHiddenElement : IDispatch {
    [propget, id (DISPID_IHTMLINPUTHIDDENELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTHIDDENELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTHIDDENELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTHIDDENELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTHIDDENELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTHIDDENELEMENT_STATUS)] HRESULT status ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTHIDDENELEMENT_STATUS)] HRESULT status ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTHIDDENELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTHIDDENELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLINPUTHIDDENELEMENT_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
    [id (DISPID_IHTMLINPUTHIDDENELEMENT_CREATETEXTRANGE)] HRESULT createTextRange ([retval, out] IHTMLTxtRange **range);
  };
  [odl, oleautomation, dual, uuid (3050f2a6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLInputTextElement : IDispatch {
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_STATUS)] HRESULT status ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_STATUS)] HRESULT status ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] HRESULT defaultValue ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] HRESULT defaultValue ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_SIZE), displaybind, bindable] HRESULT size ([in] long v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_SIZE), displaybind, bindable] HRESULT size ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_MAXLENGTH), displaybind, bindable] HRESULT maxLength ([in] long v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_MAXLENGTH), displaybind, bindable] HRESULT maxLength ([retval, out] long *p);
    [id (DISPID_IHTMLINPUTTEXTELEMENT_SELECT)] HRESULT select ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_ONCHANGE), displaybind, bindable] HRESULT onchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_ONCHANGE), displaybind, bindable] HRESULT onchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_ONSELECT), displaybind, bindable] HRESULT onselect ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_ONSELECT), displaybind, bindable] HRESULT onselect ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_READONLY), displaybind, bindable] HRESULT readOnly ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_READONLY), displaybind, bindable] HRESULT readOnly ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLINPUTTEXTELEMENT_CREATETEXTRANGE)] HRESULT createTextRange ([retval, out] IHTMLTxtRange **range);
  };
  [odl, oleautomation, dual, uuid (3050f2d2-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLInputTextElement2 : IDispatch {
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONSTART)] HRESULT selectionStart ([in] long v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONSTART)] HRESULT selectionStart ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONEND)] HRESULT selectionEnd ([in] long v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONEND)] HRESULT selectionEnd ([retval, out] long *p);
    [id (DISPID_IHTMLINPUTTEXTELEMENT2_SETSELECTIONRANGE)] HRESULT setSelectionRange ([in] long start,[in] long end);
  };
  [odl, oleautomation, dual, uuid (3050f2ad-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLInputFileElement : IDispatch {
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_STATUS)] HRESULT status ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_STATUS)] HRESULT status ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_SIZE), displaybind, bindable] HRESULT size ([in] long v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_SIZE), displaybind, bindable] HRESULT size ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_MAXLENGTH), displaybind, bindable] HRESULT maxLength ([in] long v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_MAXLENGTH), displaybind, bindable] HRESULT maxLength ([retval, out] long *p);
    [id (DISPID_IHTMLINPUTFILEELEMENT_SELECT)] HRESULT select ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_ONCHANGE), displaybind, bindable] HRESULT onchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_ONCHANGE), displaybind, bindable] HRESULT onchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_ONSELECT), displaybind, bindable] HRESULT onselect ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_ONSELECT), displaybind, bindable] HRESULT onselect ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f2bc-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLOptionButtonElement : IDispatch {
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_CHECKED), bindable] HRESULT checked ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_CHECKED), bindable] HRESULT checked ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_DEFAULTCHECKED), bindable] HRESULT defaultChecked ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_DEFAULTCHECKED), bindable] HRESULT defaultChecked ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_ONCHANGE), displaybind, bindable] HRESULT onchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_ONCHANGE), displaybind, bindable] HRESULT onchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_STATUS)] HRESULT status ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_STATUS)] HRESULT status ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_INDETERMINATE), bindable] HRESULT indeterminate ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_INDETERMINATE), bindable] HRESULT indeterminate ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
  };
  [odl, oleautomation, dual, uuid (3050f2c2-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLInputImage : IDispatch {
    [propget, id (DISPID_IHTMLINPUTIMAGE_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_BORDER), displaybind, bindable] HRESULT border ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_BORDER), displaybind, bindable] HRESULT border ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_VSPACE), displaybind, bindable] HRESULT vspace ([in] long v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_VSPACE), displaybind, bindable] HRESULT vspace ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_HSPACE), displaybind, bindable] HRESULT hspace ([in] long v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_HSPACE), displaybind, bindable] HRESULT hspace ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_ALT), displaybind, bindable] HRESULT alt ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_ALT), displaybind, bindable] HRESULT alt ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_SRC), displaybind, bindable] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_SRC), displaybind, bindable] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_LOWSRC), displaybind, bindable] HRESULT lowsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_LOWSRC), displaybind, bindable] HRESULT lowsrc ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_VRML), displaybind, bindable] HRESULT vrml ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_VRML), displaybind, bindable] HRESULT vrml ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_DYNSRC), displaybind, bindable] HRESULT dynsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_DYNSRC), displaybind, bindable] HRESULT dynsrc ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLINPUTIMAGE_READYSTATE)] HRESULT readyState ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLINPUTIMAGE_COMPLETE)] HRESULT complete ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_LOOP), displaybind, bindable] HRESULT loop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_LOOP), displaybind, bindable] HRESULT loop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_ALIGN), displaybind, bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_ALIGN), displaybind, bindable] HRESULT align ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_ONERROR), displaybind, bindable] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_ONERROR), displaybind, bindable] HRESULT onerror ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_ONABORT), displaybind, bindable] HRESULT onabort ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_ONABORT), displaybind, bindable] HRESULT onabort ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_WIDTH)] HRESULT width ([in] long v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_WIDTH)] HRESULT width ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_HEIGHT)] HRESULT height ([in] long v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_HEIGHT)] HRESULT height ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_START), displaybind, bindable] HRESULT start ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_START), displaybind, bindable] HRESULT start ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f2d4-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLInputRangeElement : IDispatch {
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_ALT), displaybind, bindable] HRESULT alt ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_ALT), displaybind, bindable] HRESULT alt ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_MIN)] HRESULT min ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_MIN)] HRESULT min ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_MAX)] HRESULT max ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_MAX)] HRESULT max ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_STEP)] HRESULT step ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_STEP)] HRESULT step ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_VALUEASNUMBER)] HRESULT valueAsNumber ([in] double v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_VALUEASNUMBER)] HRESULT valueAsNumber ([retval, out] double *p);
    [id (DISPID_IHTMLINPUTRANGEELEMENT_STEPUP)] HRESULT stepUp ([defaultvalue (1), in] long n);
    [id (DISPID_IHTMLINPUTRANGEELEMENT_STEPDOWN)] HRESULT stepDown ([defaultvalue (1), in] long n);
  };
  [hidden, uuid (3050f57d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLInputElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_TYPE)] void type (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_TYPE)] BSTR type ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable] void value (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable] BSTR value ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_STATUS)] void status (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_STATUS)] VARIANT_BOOL status ();
    [propget, id (DISPID_IHTMLINPUTELEMENT_FORM)] IHTMLFormElement *form ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable] void size (long v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable] long size ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable] void maxLength (long v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable] long maxLength ();
    [id (DISPID_IHTMLINPUTELEMENT_SELECT)] void select ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] void defaultValue (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] BSTR defaultValue ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable] void readOnly (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable] VARIANT_BOOL readOnly ();
    [id (DISPID_IHTMLINPUTELEMENT_CREATETEXTRANGE)] IHTMLTxtRange *createTextRange ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable] void indeterminate (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable] VARIANT_BOOL indeterminate ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable] void defaultChecked (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable] VARIANT_BOOL defaultChecked ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_CHECKED), bindable] void checked (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_CHECKED), bindable] VARIANT_BOOL checked ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable] void border (VARIANT v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable] VARIANT border ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable] void vspace (long v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable] long vspace ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable] void hspace (long v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable] long hspace ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable] void alt (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable] BSTR alt ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable] void src (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable] BSTR src ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable] void lowsrc (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable] BSTR lowsrc ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable] void vrml (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable] BSTR vrml ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable] void dynsrc (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable] BSTR dynsrc ();
    [propget, id (DISPID_IHTMLINPUTELEMENT_COMPLETE)] VARIANT_BOOL complete ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable] void loop (VARIANT v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable] VARIANT loop ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable] void align (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable] BSTR align ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_WIDTH)] void width (long v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_WIDTH)] long width ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_HEIGHT)] void height (long v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_HEIGHT)] long height ();
    [propput, id (DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable] void start (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable] BSTR start ();
    [propput, id (DISPID_IHTMLINPUTELEMENT2_ACCEPT), displaybind, bindable] void accept (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT2_ACCEPT), displaybind, bindable] BSTR accept ();
    [propput, id (DISPID_IHTMLINPUTELEMENT2_USEMAP), displaybind, bindable] void useMap (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT2_USEMAP), displaybind, bindable] BSTR useMap ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONSTART)] void selectionStart (long v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONSTART)] long selectionStart ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONEND)] void selectionEnd (long v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONEND)] long selectionEnd ();
    [id (DISPID_IHTMLINPUTTEXTELEMENT2_SETSELECTIONRANGE)] void setSelectionRange ([in] long start,[in] long end);
    [propput, id (DISPID_IHTMLINPUTELEMENT3_IE8_SRC)] void ie8_src (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT3_IE8_SRC)] BSTR ie8_src ();
    [propput, id (DISPID_IHTMLINPUTELEMENT3_IE8_LOWSRC)] void ie8_lowsrc (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT3_IE8_LOWSRC)] BSTR ie8_lowsrc ();
    [propput, id (DISPID_IHTMLINPUTELEMENT3_IE8_VRML)] void ie8_vrml (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT3_IE8_VRML)] BSTR ie8_vrml ();
    [propput, id (DISPID_IHTMLINPUTELEMENT3_IE8_DYNSRC)] void ie8_dynsrc (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT3_IE8_DYNSRC)] BSTR ie8_dynsrc ();
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_MIN)] void min (BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_MIN)] BSTR min ();
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_MAX)] void max (BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_MAX)] BSTR max ();
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_STEP)] void step (BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_STEP)] BSTR step ();
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_VALUEASNUMBER)] void valueAsNumber (double v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_VALUEASNUMBER)] double valueAsNumber ();
    [id (DISPID_IHTMLINPUTRANGEELEMENT_STEPUP)] void stepUp ([defaultvalue (1), in] long n);
    [id (DISPID_IHTMLINPUTRANGEELEMENT_STEPDOWN)] void stepDown ([defaultvalue (1), in] long n);
  };
  [noncreatable, uuid (3050f5d8-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLInputElement {
    [default] dispinterface DispHTMLInputElement;
    [source, default] dispinterface HTMLInputTextElementEvents;
    [source] dispinterface HTMLInputTextElementEvents2;
    [source] dispinterface HTMLOptionButtonElementEvents;
    [source] dispinterface HTMLButtonElementEvents;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLInputElement;
    interface IHTMLInputElement2;
    interface IHTMLInputTextElement;
    interface IHTMLInputTextElement2;
    interface IHTMLInputHiddenElement;
    interface IHTMLInputButtonElement;
    interface IHTMLInputFileElement;
    interface IHTMLOptionButtonElement;
    interface IHTMLInputImage;
    interface IHTMLInputElement3;
    interface IHTMLInputRangeElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CInput;")
  [odl, oleautomation, dual, uuid (3050f2aa-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTextAreaElement : IDispatch {
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_STATUS)] HRESULT status ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_STATUS)] HRESULT status ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] HRESULT defaultValue ([in] BSTR v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] HRESULT defaultValue ([retval, out] BSTR *p);
    [id (DISPID_IHTMLTEXTAREAELEMENT_SELECT)] HRESULT select ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_ONCHANGE), displaybind, bindable] HRESULT onchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_ONCHANGE), displaybind, bindable] HRESULT onchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_ONSELECT), displaybind, bindable] HRESULT onselect ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_ONSELECT), displaybind, bindable] HRESULT onselect ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable] HRESULT readOnly ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable] HRESULT readOnly ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable] HRESULT rows ([in] long v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable] HRESULT rows ([retval, out] long *p);
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable] HRESULT cols ([in] long v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable] HRESULT cols ([retval, out] long *p);
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable] HRESULT wrap ([in] BSTR v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable] HRESULT wrap ([retval, out] BSTR *p);
    [id (DISPID_IHTMLTEXTAREAELEMENT_CREATETEXTRANGE)] HRESULT createTextRange ([retval, out] IHTMLTxtRange **range);
  };
  [odl, oleautomation, dual, uuid (3050f2d3-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTextAreaElement2 : IDispatch {
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT2_SELECTIONSTART)] HRESULT selectionStart ([in] long v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT2_SELECTIONSTART)] HRESULT selectionStart ([retval, out] long *p);
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT2_SELECTIONEND)] HRESULT selectionEnd ([in] long v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT2_SELECTIONEND)] HRESULT selectionEnd ([retval, out] long *p);
    [id (DISPID_IHTMLTEXTAREAELEMENT2_SETSELECTIONRANGE)] HRESULT setSelectionRange ([in] long start,[in] long end);
  };
  [hidden, uuid (3050f521-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTextAreaElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_TYPE)] BSTR type ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable] void value (BSTR v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable] BSTR value ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_STATUS)] void status (VARIANT v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_STATUS)] VARIANT status ();
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_FORM)] IHTMLFormElement *form ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] void defaultValue (BSTR v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] BSTR defaultValue ();
    [id (DISPID_IHTMLTEXTAREAELEMENT_SELECT)] void select ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable] void readOnly (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable] VARIANT_BOOL readOnly ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable] void rows (long v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable] long rows ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable] void cols (long v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable] long cols ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable] void wrap (BSTR v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable] BSTR wrap ();
    [id (DISPID_IHTMLTEXTAREAELEMENT_CREATETEXTRANGE)] IHTMLTxtRange *createTextRange ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT2_SELECTIONSTART)] void selectionStart (long v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT2_SELECTIONSTART)] long selectionStart ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT2_SELECTIONEND)] void selectionEnd (long v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT2_SELECTIONEND)] long selectionEnd ();
    [id (DISPID_IHTMLTEXTAREAELEMENT2_SETSELECTIONRANGE)] void setSelectionRange ([in] long start,[in] long end);
  };
  [noncreatable, uuid (3050f2ac-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTextAreaElement {
    [default] dispinterface DispHTMLTextAreaElement;
    [source, default] dispinterface HTMLInputTextElementEvents;
    [source] dispinterface HTMLInputTextElementEvents2;
    [source] dispinterface HTMLTextContainerEvents;
    [source] dispinterface HTMLTextContainerEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLTextAreaElement;
    interface IHTMLTextAreaElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTextArea;")
  [hidden, uuid (3050f54d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLRichtextElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_TYPE)] BSTR type ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable] void value (BSTR v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable] BSTR value ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_STATUS)] void status (VARIANT v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_STATUS)] VARIANT status ();
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_FORM)] IHTMLFormElement *form ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] void defaultValue (BSTR v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] BSTR defaultValue ();
    [id (DISPID_IHTMLTEXTAREAELEMENT_SELECT)] void select ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable] void readOnly (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable] VARIANT_BOOL readOnly ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable] void rows (long v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable] long rows ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable] void cols (long v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable] long cols ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable] void wrap (BSTR v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable] BSTR wrap ();
    [id (DISPID_IHTMLTEXTAREAELEMENT_CREATETEXTRANGE)] IHTMLTxtRange *createTextRange ();
  };
  [noncreatable, uuid (3050f2df-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLRichtextElement {
    [default] dispinterface DispHTMLRichtextElement;
    [source, default] dispinterface HTMLInputTextElementEvents;
    [source] dispinterface HTMLInputTextElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLTextAreaElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CRichtext;")
  [odl, oleautomation, dual, uuid (3050f2bb-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLButtonElement : IDispatch {
    [propget, id (DISPID_IHTMLBUTTONELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBUTTONELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLBUTTONELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBUTTONELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLBUTTONELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBUTTONELEMENT_STATUS)] HRESULT status ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBUTTONELEMENT_STATUS)] HRESULT status ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBUTTONELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLBUTTONELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLBUTTONELEMENT_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
    [id (DISPID_IHTMLBUTTONELEMENT_CREATETEXTRANGE)] HRESULT createTextRange ([retval, out] IHTMLTxtRange **range);
  };
  [odl, oleautomation, dual, uuid (305106f3-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLButtonElement2 : IDispatch {
    [propput, id (DISPID_IHTMLBUTTONELEMENT2_IE9_TYPE)] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLBUTTONELEMENT2_IE9_TYPE)] HRESULT type ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f51f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLButtonElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propget, id (DISPID_IHTMLBUTTONELEMENT_TYPE)] BSTR type ();
    [propput, id (DISPID_IHTMLBUTTONELEMENT_VALUE), displaybind, bindable] void value (BSTR v);
    [propget, id (DISPID_IHTMLBUTTONELEMENT_VALUE), displaybind, bindable] BSTR value ();
    [propput, id (DISPID_IHTMLBUTTONELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLBUTTONELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propput, id (DISPID_IHTMLBUTTONELEMENT_STATUS)] void status (VARIANT v);
    [propget, id (DISPID_IHTMLBUTTONELEMENT_STATUS)] VARIANT status ();
    [propget, id (DISPID_IHTMLBUTTONELEMENT_FORM)] IHTMLFormElement *form ();
    [id (DISPID_IHTMLBUTTONELEMENT_CREATETEXTRANGE)] IHTMLTxtRange *createTextRange ();
    [propput, id (DISPID_IHTMLBUTTONELEMENT2_IE9_TYPE)] void ie9_type (BSTR v);
    [propget, id (DISPID_IHTMLBUTTONELEMENT2_IE9_TYPE)] BSTR ie9_type ();
  };
  [noncreatable, uuid (3050f2c6-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLButtonElement {
    [default] dispinterface DispHTMLButtonElement;
    [source, default] dispinterface HTMLButtonElementEvents;
    [source] dispinterface HTMLButtonElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLButtonElement;
    interface IHTMLButtonElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CButton;")
  [hidden, uuid (3050f61f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLMarqueeElementEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLTEXTCONTAINEREVENTS2_ONCHANGE)] void onchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLTEXTCONTAINEREVENTS2_ONSELECT)] void onselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLMARQUEEELEMENTEVENTS2_ONBOUNCE)] void onbounce ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLMARQUEEELEMENTEVENTS2_ONFINISH)] void onfinish ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLMARQUEEELEMENTEVENTS2_ONSTART)] void onstart ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f2b8-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLMarqueeElementEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
    [id (DISPID_HTMLTEXTCONTAINEREVENTS_ONCHANGE)] void onchange ();
    [id (DISPID_HTMLTEXTCONTAINEREVENTS_ONSELECT)] void onselect ();
    [id (DISPID_HTMLMARQUEEELEMENTEVENTS_ONBOUNCE)] void onbounce ();
    [id (DISPID_HTMLMARQUEEELEMENTEVENTS_ONFINISH)] void onfinish ();
    [id (DISPID_HTMLMARQUEEELEMENTEVENTS_ONSTART)] void onstart ();
  };
  typedef enum _htmlMarqueeBehavior {
    htmlMarqueeBehaviorscroll = 1,
    htmlMarqueeBehaviorslide = 2,
    htmlMarqueeBehavioralternate = 3,
    htmlMarqueeBehavior_Max = 0x7FFFFFFF
  } htmlMarqueeBehavior;

  typedef enum _htmlMarqueeDirection {
    htmlMarqueeDirectionleft = 1,
    htmlMarqueeDirectionright = 3,
    htmlMarqueeDirectionup = 5,
    htmlMarqueeDirectiondown = 7,
    htmlMarqueeDirection_Max = 0x7FFFFFFF
  } htmlMarqueeDirection;
  [odl, oleautomation, dual, uuid (3050f2b5-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMarqueeElement : IDispatch {
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_BGCOLOR)] HRESULT bgColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_BGCOLOR)] HRESULT bgColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_SCROLLDELAY)] HRESULT scrollDelay ([in] long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_SCROLLDELAY)] HRESULT scrollDelay ([retval, out] long *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_DIRECTION)] HRESULT direction ([in] BSTR v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_DIRECTION)] HRESULT direction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_BEHAVIOR)] HRESULT behavior ([in] BSTR v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_BEHAVIOR)] HRESULT behavior ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_SCROLLAMOUNT)] HRESULT scrollAmount ([in] long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_SCROLLAMOUNT)] HRESULT scrollAmount ([retval, out] long *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_LOOP)] HRESULT loop ([in] long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_LOOP)] HRESULT loop ([retval, out] long *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_VSPACE)] HRESULT vspace ([in] long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_VSPACE)] HRESULT vspace ([retval, out] long *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_HSPACE)] HRESULT hspace ([in] long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_HSPACE)] HRESULT hspace ([retval, out] long *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_ONFINISH), displaybind, bindable] HRESULT onfinish ([in] VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_ONFINISH), displaybind, bindable] HRESULT onfinish ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_ONSTART), displaybind, bindable] HRESULT onstart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_ONSTART), displaybind, bindable] HRESULT onstart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_ONBOUNCE), displaybind, bindable] HRESULT onbounce ([in] VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_ONBOUNCE), displaybind, bindable] HRESULT onbounce ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_WIDTH)] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_WIDTH)] HRESULT width ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_HEIGHT)] HRESULT height ([in] VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_HEIGHT)] HRESULT height ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_TRUESPEED), displaybind, bindable] HRESULT trueSpeed ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_TRUESPEED), displaybind, bindable] HRESULT trueSpeed ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLMARQUEEELEMENT_START)] HRESULT start ();
    [id (DISPID_IHTMLMARQUEEELEMENT_STOP)] HRESULT stop ();
  };
  [hidden, uuid (3050f527-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLMarqueeElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_BGCOLOR)] void bgColor (VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_BGCOLOR)] VARIANT bgColor ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_SCROLLDELAY)] void scrollDelay (long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_SCROLLDELAY)] long scrollDelay ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_DIRECTION)] void direction (BSTR v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_DIRECTION)] BSTR direction ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_BEHAVIOR)] void behavior (BSTR v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_BEHAVIOR)] BSTR behavior ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_SCROLLAMOUNT)] void scrollAmount (long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_SCROLLAMOUNT)] long scrollAmount ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_LOOP)] void loop (long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_LOOP)] long loop ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_VSPACE)] void vspace (long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_VSPACE)] long vspace ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_HSPACE)] void hspace (long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_HSPACE)] long hspace ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_ONFINISH), displaybind, bindable] void onfinish (VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_ONFINISH), displaybind, bindable] VARIANT onfinish ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_ONSTART), displaybind, bindable] void onstart (VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_ONSTART), displaybind, bindable] VARIANT onstart ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_ONBOUNCE), displaybind, bindable] void onbounce (VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_ONBOUNCE), displaybind, bindable] VARIANT onbounce ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_WIDTH)] void width (VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_WIDTH)] VARIANT width ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_HEIGHT)] void height (VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_HEIGHT)] VARIANT height ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_TRUESPEED), displaybind, bindable] void trueSpeed (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_TRUESPEED), displaybind, bindable] VARIANT_BOOL trueSpeed ();
    [id (DISPID_IHTMLMARQUEEELEMENT_START)] void start ();
    [id (DISPID_IHTMLMARQUEEELEMENT_STOP)] void stop ();
  };
  [noncreatable, uuid (3050f2b9-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLMarqueeElement {
    [default] dispinterface DispHTMLMarqueeElement;
    [source, default] dispinterface HTMLMarqueeElementEvents;
    [source] dispinterface HTMLMarqueeElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLMarqueeElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMarquee;")
  [odl, oleautomation, dual, uuid (3050f81c-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLHtmlElement : IDispatch {
    [propput, id (DISPID_IHTMLHTMLELEMENT_VERSION), displaybind, bindable] HRESULT version ([in] BSTR v);
    [propget, id (DISPID_IHTMLHTMLELEMENT_VERSION), displaybind, bindable] HRESULT version ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f81d-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLHeadElement : IDispatch {
    [propput, id (DISPID_IHTMLHEADELEMENT_PROFILE), displaybind, bindable] HRESULT profile ([in] BSTR v);
    [propget, id (DISPID_IHTMLHEADELEMENT_PROFILE), displaybind, bindable] HRESULT profile ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3051042f-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLHeadElement2 : IDispatch {
    [propput, id (DISPID_IHTMLHEADELEMENT2_IE8_PROFILE), displaybind, bindable] HRESULT profile ([in] BSTR v);
    [propget, id (DISPID_IHTMLHEADELEMENT2_IE8_PROFILE), displaybind, bindable] HRESULT profile ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f322-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTitleElement : IDispatch {
    [propput, id (DISPID_IHTMLTITLEELEMENT_TEXT), bindable] HRESULT text ([in] BSTR v);
    [propget, id (DISPID_IHTMLTITLEELEMENT_TEXT), bindable] HRESULT text ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f203-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMetaElement : IDispatch {
    [propput, id (DISPID_IHTMLMETAELEMENT_HTTPEQUIV), displaybind, bindable] HRESULT httpEquiv ([in] BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT_HTTPEQUIV), displaybind, bindable] HRESULT httpEquiv ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLMETAELEMENT_CONTENT), displaybind, bindable] HRESULT content ([in] BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT_CONTENT), displaybind, bindable] HRESULT content ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLMETAELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLMETAELEMENT_URL), displaybind, bindable] HRESULT url ([in] BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT_URL), displaybind, bindable] HRESULT url ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLMETAELEMENT_CHARSET), displaybind, bindable] HRESULT charset ([in] BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT_CHARSET), displaybind, bindable] HRESULT charset ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f81f-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMetaElement2 : IDispatch {
    [propput, id (DISPID_IHTMLMETAELEMENT2_SCHEME), displaybind, bindable] HRESULT scheme ([in] BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT2_SCHEME), displaybind, bindable] HRESULT scheme ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510495-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMetaElement3 : IDispatch {
    [propput, id (DISPID_IHTMLMETAELEMENT3_IE8_URL)] HRESULT url ([in] BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT3_IE8_URL)] HRESULT url ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f204-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBaseElement : IDispatch {
    [propput, id (DISPID_IHTMLBASEELEMENT_HREF), displaybind, bindable] HRESULT href ([in] BSTR v);
    [propget, id (DISPID_IHTMLBASEELEMENT_HREF), displaybind, bindable] HRESULT href ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBASEELEMENT_TARGET), displaybind, bindable] HRESULT target ([in] BSTR v);
    [propget, id (DISPID_IHTMLBASEELEMENT_TARGET), displaybind, bindable] HRESULT target ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510420-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBaseElement2 : IDispatch {
    [propput, id (DISPID_IHTMLBASEELEMENT2_IE8_HREF), displaybind, bindable] HRESULT href ([in] BSTR v);
    [propget, id (DISPID_IHTMLBASEELEMENT2_IE8_HREF), displaybind, bindable] HRESULT href ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f206-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLIsIndexElement : IDispatch {
    [propput, id (DISPID_IHTMLISINDEXELEMENT_PROMPT), displaybind, bindable] HRESULT prompt ([in] BSTR v);
    [propget, id (DISPID_IHTMLISINDEXELEMENT_PROMPT), displaybind, bindable] HRESULT prompt ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLISINDEXELEMENT_ACTION), displaybind, bindable] HRESULT action ([in] BSTR v);
    [propget, id (DISPID_IHTMLISINDEXELEMENT_ACTION), displaybind, bindable] HRESULT action ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f82f-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLIsIndexElement2 : IDispatch {
    [propget, id (DISPID_IHTMLISINDEXELEMENT2_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
  };
  [odl, oleautomation, dual, uuid (3050f207-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLNextIdElement : IDispatch {
    [propput, id (DISPID_IHTMLNEXTIDELEMENT_N), displaybind, bindable] HRESULT n ([in] BSTR v);
    [propget, id (DISPID_IHTMLNEXTIDELEMENT_N), displaybind, bindable] HRESULT n ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f560-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLHtmlElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLHTMLELEMENT_VERSION), displaybind, bindable] void version (BSTR v);
    [propget, id (DISPID_IHTMLHTMLELEMENT_VERSION), displaybind, bindable] BSTR version ();
  };
  [noncreatable, uuid (3050f491-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLHtmlElement {
    [default] dispinterface DispHTMLHtmlElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLHtmlElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CHtmlElement;")
  [hidden, uuid (3050f561-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLHeadElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLHEADELEMENT_PROFILE), displaybind, bindable] void profile (BSTR v);
    [propget, id (DISPID_IHTMLHEADELEMENT_PROFILE), displaybind, bindable] BSTR profile ();
    [propput, id (DISPID_IHTMLHEADELEMENT2_IE8_PROFILE), displaybind, bindable] void ie8_profile (BSTR v);
    [propget, id (DISPID_IHTMLHEADELEMENT2_IE8_PROFILE), displaybind, bindable] BSTR ie8_profile ();
  };
  [noncreatable, uuid (3050f493-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLHeadElement {
    [default] dispinterface DispHTMLHeadElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLHeadElement;
    interface IHTMLHeadElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CHeadElement;")
  [hidden, uuid (3050f516-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTitleElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLTITLEELEMENT_TEXT), bindable] void text (BSTR v);
    [propget, id (DISPID_IHTMLTITLEELEMENT_TEXT), bindable] BSTR text ();
  };
  [noncreatable, uuid (3050f284-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTitleElement {
    [default] dispinterface DispHTMLTitleElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLTitleElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTitleElement;")
  [hidden, uuid (3050f517-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLMetaElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLMETAELEMENT_HTTPEQUIV), displaybind, bindable] void httpEquiv (BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT_HTTPEQUIV), displaybind, bindable] BSTR httpEquiv ();
    [propput, id (DISPID_IHTMLMETAELEMENT_CONTENT), displaybind, bindable] void content (BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT_CONTENT), displaybind, bindable] BSTR content ();
    [propput, id (DISPID_IHTMLMETAELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propput, id (DISPID_IHTMLMETAELEMENT_URL), displaybind, bindable] void url (BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT_URL), displaybind, bindable] BSTR url ();
    [propput, id (DISPID_IHTMLMETAELEMENT_CHARSET), displaybind, bindable] void charset (BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT_CHARSET), displaybind, bindable] BSTR charset ();
    [propput, id (DISPID_IHTMLMETAELEMENT2_SCHEME), displaybind, bindable] void scheme (BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT2_SCHEME), displaybind, bindable] BSTR scheme ();
    [propput, id (DISPID_IHTMLMETAELEMENT3_IE8_URL)] void ie8_url (BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT3_IE8_URL)] BSTR ie8_url ();
  };
  [noncreatable, uuid (3050f275-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLMetaElement {
    [default] dispinterface DispHTMLMetaElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLMetaElement;
    interface IHTMLMetaElement2;
    interface IHTMLMetaElement3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMetaElement;")
  [hidden, uuid (3050f518-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLBaseElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLBASEELEMENT_HREF), displaybind, bindable] void href (BSTR v);
    [propget, id (DISPID_IHTMLBASEELEMENT_HREF), displaybind, bindable] BSTR href ();
    [propput, id (DISPID_IHTMLBASEELEMENT_TARGET), displaybind, bindable] void target (BSTR v);
    [propget, id (DISPID_IHTMLBASEELEMENT_TARGET), displaybind, bindable] BSTR target ();
    [propput, id (DISPID_IHTMLBASEELEMENT2_IE8_HREF), displaybind, bindable] void ie8_href (BSTR v);
    [propget, id (DISPID_IHTMLBASEELEMENT2_IE8_HREF), displaybind, bindable] BSTR ie8_href ();
  };
  [noncreatable, uuid (3050f276-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLBaseElement {
    [default] dispinterface DispHTMLBaseElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLBaseElement;
    interface IHTMLBaseElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CBaseElement;")
  [hidden, uuid (3050f519-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLIsIndexElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLISINDEXELEMENT_PROMPT), displaybind, bindable] void prompt (BSTR v);
    [propget, id (DISPID_IHTMLISINDEXELEMENT_PROMPT), displaybind, bindable] BSTR prompt ();
    [propput, id (DISPID_IHTMLISINDEXELEMENT_ACTION), displaybind, bindable] void action (BSTR v);
    [propget, id (DISPID_IHTMLISINDEXELEMENT_ACTION), displaybind, bindable] BSTR action ();
    [propget, id (DISPID_IHTMLISINDEXELEMENT2_FORM)] IHTMLFormElement *form ();
  };
  [noncreatable, uuid (3050f278-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLIsIndexElement {
    [default] dispinterface DispHTMLIsIndexElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLIsIndexElement;
    interface IHTMLIsIndexElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CIsIndexElement;")
  [hidden, uuid (3050f51a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLNextIdElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLNEXTIDELEMENT_N), displaybind, bindable] void n (BSTR v);
    [propget, id (DISPID_IHTMLNEXTIDELEMENT_N), displaybind, bindable] BSTR n ();
  };
  [noncreatable, uuid (3050f279-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLNextIdElement {
    [default] dispinterface DispHTMLNextIdElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLNextIdElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CNextIdElement;")
  [odl, oleautomation, dual, uuid (3050f202-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBaseFontElement : IDispatch {
    [propput, id (DISPID_IHTMLBASEFONTELEMENT_COLOR), displaybind, bindable] HRESULT color ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBASEFONTELEMENT_COLOR), displaybind, bindable] HRESULT color ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBASEFONTELEMENT_FACE), displaybind, bindable] HRESULT face ([in] BSTR v);
    [propget, id (DISPID_IHTMLBASEFONTELEMENT_FACE), displaybind, bindable] HRESULT face ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBASEFONTELEMENT_SIZE), displaybind, bindable] HRESULT size ([in] long v);
    [propget, id (DISPID_IHTMLBASEFONTELEMENT_SIZE), displaybind, bindable] HRESULT size ([retval, out] long *p);
  };
  [hidden, uuid (3050f504-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLBaseFontElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLBASEFONTELEMENT_COLOR), displaybind, bindable] void color (VARIANT v);
    [propget, id (DISPID_IHTMLBASEFONTELEMENT_COLOR), displaybind, bindable] VARIANT color ();
    [propput, id (DISPID_IHTMLBASEFONTELEMENT_FACE), displaybind, bindable] void face (BSTR v);
    [propget, id (DISPID_IHTMLBASEFONTELEMENT_FACE), displaybind, bindable] BSTR face ();
    [propput, id (DISPID_IHTMLBASEFONTELEMENT_SIZE), displaybind, bindable] void size (long v);
    [propget, id (DISPID_IHTMLBASEFONTELEMENT_SIZE), displaybind, bindable] long size ();
  };
  [noncreatable, uuid (3050f282-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLBaseFontElement {
    [default] dispinterface DispHTMLBaseFontElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLBaseFontElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CBaseFontElement;")
  [odl, oleautomation, dual, uuid (3050f209-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLUnknownElement : IDispatch {
  };
  [hidden, uuid (3050f539-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLUnknownElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
  };
  [noncreatable, uuid (3050f268-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLUnknownElement {
    [default] dispinterface DispHTMLUnknownElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLUnknownElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CUnknownElement;")
  interface IWebGeolocation;
  [odl, oleautomation, dual, uuid (FECEAAA2-8405-11cf-8ba1-00aa00476da6)] interface IOmHistory : IDispatch {
    [propget, id (DISPID_IOMHISTORY_LENGTH)] HRESULT length ([retval, out] short *p);
    [id (DISPID_IOMHISTORY_BACK)] HRESULT back ([optional, in] VARIANT *pvargdistance);
    [id (DISPID_IOMHISTORY_FORWARD)] HRESULT forward ([optional, in] VARIANT *pvargdistance);
    [id (DISPID_IOMHISTORY_GO)] HRESULT go ([optional, in] VARIANT *pvargdistance);
  };
  [odl, oleautomation, dual, uuid (3050f3fc-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMimeTypesCollection : IDispatch {
    [propget, id (DISPID_IHTMLMIMETYPESCOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (3050f3fd-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLPluginsCollection : IDispatch {
    [propget, id (DISPID_IHTMLPLUGINSCOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLPLUGINSCOLLECTION_REFRESH)] HRESULT refresh ([defaultvalue (0), in] VARIANT_BOOL reload);
  };
  [odl, oleautomation, dual, uuid (3050f401-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLOpsProfile : IDispatch {
    [id (DISPID_IHTMLOPSPROFILE_ADDREQUEST)] HRESULT addRequest ([in] BSTR name,[optional, in] VARIANT reserved,[retval, out] VARIANT_BOOL *success);
    [id (DISPID_IHTMLOPSPROFILE_CLEARREQUEST)] HRESULT clearRequest ();
    [id (DISPID_IHTMLOPSPROFILE_DOREQUEST)] HRESULT doRequest ([in] VARIANT usage,[optional, in] VARIANT fname,[optional, in] VARIANT domain,[optional, in] VARIANT path,[optional, in] VARIANT expire,[optional, in] VARIANT reserved);
    [id (DISPID_IHTMLOPSPROFILE_GETATTRIBUTE)] HRESULT getAttribute ([in] BSTR name,[retval, out] BSTR *value);
    [id (DISPID_IHTMLOPSPROFILE_SETATTRIBUTE)] HRESULT setAttribute ([in] BSTR name,[in] BSTR value,[optional, in] VARIANT prefs,[retval, out] VARIANT_BOOL *success);
    [id (DISPID_IHTMLOPSPROFILE_COMMITCHANGES)] HRESULT commitChanges ([retval, out] VARIANT_BOOL *success);
    [id (DISPID_IHTMLOPSPROFILE_ADDREADREQUEST)] HRESULT addReadRequest ([in] BSTR name,[optional, in] VARIANT reserved,[retval, out] VARIANT_BOOL *success);
    [id (DISPID_IHTMLOPSPROFILE_DOREADREQUEST)] HRESULT doReadRequest ([in] VARIANT usage,[optional, in] VARIANT fname,[optional, in] VARIANT domain,[optional, in] VARIANT path,[optional, in] VARIANT expire,[optional, in] VARIANT reserved);
    [id (DISPID_IHTMLOPSPROFILE_DOWRITEREQUEST)] HRESULT doWriteRequest ([retval, out] VARIANT_BOOL *success);
  };
  [odl, oleautomation, dual, uuid (FECEAAA5-8405-11cf-8ba1-00aa00476da6)] interface IOmNavigator : IDispatch {
    [propget, id (DISPID_IOMNAVIGATOR_APPCODENAME)] HRESULT appCodeName ([retval, out] BSTR *p);
    [propget, id (DISPID_IOMNAVIGATOR_APPNAME)] HRESULT appName ([retval, out] BSTR *p);
    [propget, id (DISPID_IOMNAVIGATOR_APPVERSION)] HRESULT appVersion ([retval, out] BSTR *p);
    [propget, id (DISPID_IOMNAVIGATOR_USERAGENT)] HRESULT userAgent ([retval, out] BSTR *p);
    [id (DISPID_IOMNAVIGATOR_JAVAENABLED)] HRESULT javaEnabled ([retval, out] VARIANT_BOOL *enabled);
    [id (DISPID_IOMNAVIGATOR_TAINTENABLED)] HRESULT taintEnabled ([retval, out] VARIANT_BOOL *enabled);
    [propget, id (DISPID_IOMNAVIGATOR_MIMETYPES)] HRESULT mimeTypes ([retval, out] IHTMLMimeTypesCollection **p);
    [propget, id (DISPID_IOMNAVIGATOR_PLUGINS)] HRESULT plugins ([retval, out] IHTMLPluginsCollection **p);
    [propget, id (DISPID_IOMNAVIGATOR_COOKIEENABLED)] HRESULT cookieEnabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IOMNAVIGATOR_OPSPROFILE)] HRESULT opsProfile ([retval, out] IHTMLOpsProfile **p);
    [id (DISPID_IOMNAVIGATOR_TOSTRING)] HRESULT toString ([retval, out] BSTR *string);
    [propget, id (DISPID_IOMNAVIGATOR_CPUCLASS)] HRESULT cpuClass ([retval, out] BSTR *p);
    [propget, id (DISPID_IOMNAVIGATOR_SYSTEMLANGUAGE)] HRESULT systemLanguage ([retval, out] BSTR *p);
    [propget, id (DISPID_IOMNAVIGATOR_BROWSERLANGUAGE), hidden] HRESULT browserLanguage ([retval, out] BSTR *p);
    [propget, id (DISPID_IOMNAVIGATOR_USERLANGUAGE)] HRESULT userLanguage ([retval, out] BSTR *p);
    [propget, id (DISPID_IOMNAVIGATOR_PLATFORM)] HRESULT platform ([retval, out] BSTR *p);
    [propget, id (DISPID_IOMNAVIGATOR_APPMINORVERSION)] HRESULT appMinorVersion ([retval, out] BSTR *p);
    [propget, id (DISPID_IOMNAVIGATOR_CONNECTIONSPEED), hidden] HRESULT connectionSpeed ([retval, out] long *p);
    [propget, id (DISPID_IOMNAVIGATOR_ONLINE)] HRESULT onLine ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IOMNAVIGATOR_USERPROFILE)] HRESULT userProfile ([retval, out] IHTMLOpsProfile **p);
  };
  [odl, oleautomation, dual, uuid (305107cf-98b5-11cf-bb82-00aa00bdce0b)] interface INavigatorGeolocation : IDispatch {
    [propget, id (DISPID_INAVIGATORGEOLOCATION_GEOLOCATION)] HRESULT geolocation ([retval, out] IWebGeolocation **p);
  };
  [odl, oleautomation, dual, uuid (30510804-98b5-11cf-bb82-00aa00bdce0b)] interface INavigatorDoNotTrack : IDispatch {
    [propget, id (DISPID_INAVIGATORDONOTTRACK_MSDONOTTRACK)] HRESULT msDoNotTrack ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (163bb1e0-6e00-11cf-837a-48dc04c10000)] interface IHTMLLocation : IDispatch {
    [propput, id (DISPID_IHTMLLOCATION_HREF)] HRESULT href ([in] BSTR v);
    [propget, id (DISPID_IHTMLLOCATION_HREF)] HRESULT href ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLOCATION_PROTOCOL)] HRESULT protocol ([in] BSTR v);
    [propget, id (DISPID_IHTMLLOCATION_PROTOCOL)] HRESULT protocol ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLOCATION_HOST)] HRESULT host ([in] BSTR v);
    [propget, id (DISPID_IHTMLLOCATION_HOST)] HRESULT host ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLOCATION_HOSTNAME)] HRESULT hostname ([in] BSTR v);
    [propget, id (DISPID_IHTMLLOCATION_HOSTNAME)] HRESULT hostname ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLOCATION_PORT)] HRESULT port ([in] BSTR v);
    [propget, id (DISPID_IHTMLLOCATION_PORT)] HRESULT port ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLOCATION_PATHNAME)] HRESULT pathname ([in] BSTR v);
    [propget, id (DISPID_IHTMLLOCATION_PATHNAME)] HRESULT pathname ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLOCATION_SEARCH)] HRESULT search ([in] BSTR v);
    [propget, id (DISPID_IHTMLLOCATION_SEARCH)] HRESULT search ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLOCATION_HASH)] HRESULT hash ([in] BSTR v);
    [propget, id (DISPID_IHTMLLOCATION_HASH)] HRESULT hash ([retval, out] BSTR *p);
    [id (DISPID_IHTMLLOCATION_RELOAD)] HRESULT reload ([defaultvalue (0), in] VARIANT_BOOL flag);
    [id (DISPID_IHTMLLOCATION_REPLACE)] HRESULT replace ([in] BSTR bstr);
    [id (DISPID_IHTMLLOCATION_ASSIGN)] HRESULT assign ([in] BSTR bstr);
    [id (DISPID_IHTMLLOCATION_TOSTRING)] HRESULT toString ([retval, out] BSTR *string);
  };
  [hidden, uuid (3050f549-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLHistory {
    properties:
    methods:
    [propget, id (DISPID_IOMHISTORY_LENGTH)] short length ();
    [id (DISPID_IOMHISTORY_BACK)] void back ([optional, in] VARIANT *pvargdistance);
    [id (DISPID_IOMHISTORY_FORWARD)] void forward ([optional, in] VARIANT *pvargdistance);
    [id (DISPID_IOMHISTORY_GO)] void go ([optional, in] VARIANT *pvargdistance);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (FECEAAA3-8405-11cf-8ba1-00aa00476da6)] coclass HTMLHistory {
    [default] dispinterface DispHTMLHistory;
    interface IOmHistory;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_COmHistory;")
  [noncreatable, uuid (3050f3fe-98b5-11cf-bb82-00aa00bdce0b)] coclass CMimeTypes {
    [default] interface IHTMLMimeTypesCollection;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMimeTypes;")
  [hidden, uuid (3050f54a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispCPlugins {
    properties:
    methods:
    [propget, id (DISPID_IHTMLPLUGINSCOLLECTION_LENGTH)] long length ();
    [id (DISPID_IHTMLPLUGINSCOLLECTION_REFRESH)] void refresh ([defaultvalue (0), in] VARIANT_BOOL reload);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f3ff-98b5-11cf-bb82-00aa00bdce0b)] coclass CPlugins {
    [default] dispinterface DispCPlugins;
    interface IHTMLPluginsCollection;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CPlugins;")
  [noncreatable, uuid (3050f402-98b5-11cf-bb82-00aa00bdce0b)] coclass COpsProfile {
    [default] interface IHTMLOpsProfile;
  };
  cpp_quote("EXTERN_C const GUID CLSID_COpsProfile;")
  [hidden, uuid (3050f54c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLNavigator {
    properties:
    methods:
    [propget, id (DISPID_IOMNAVIGATOR_APPCODENAME)] BSTR appCodeName ();
    [propget, id (DISPID_IOMNAVIGATOR_APPNAME)] BSTR appName ();
    [propget, id (DISPID_IOMNAVIGATOR_APPVERSION)] BSTR appVersion ();
    [propget, id (DISPID_IOMNAVIGATOR_USERAGENT)] BSTR userAgent ();
    [id (DISPID_IOMNAVIGATOR_JAVAENABLED)] VARIANT_BOOL javaEnabled ();
    [id (DISPID_IOMNAVIGATOR_TAINTENABLED)] VARIANT_BOOL taintEnabled ();
    [propget, id (DISPID_IOMNAVIGATOR_MIMETYPES)] IHTMLMimeTypesCollection *mimeTypes ();
    [propget, id (DISPID_IOMNAVIGATOR_PLUGINS)] IHTMLPluginsCollection *plugins ();
    [propget, id (DISPID_IOMNAVIGATOR_COOKIEENABLED)] VARIANT_BOOL cookieEnabled ();
    [propget, id (DISPID_IOMNAVIGATOR_OPSPROFILE)] IHTMLOpsProfile *opsProfile ();
    [id (DISPID_IOMNAVIGATOR_TOSTRING)] BSTR toString ();
    [propget, id (DISPID_IOMNAVIGATOR_CPUCLASS)] BSTR cpuClass ();
    [propget, id (DISPID_IOMNAVIGATOR_SYSTEMLANGUAGE)] BSTR systemLanguage ();
    [propget, id (DISPID_IOMNAVIGATOR_BROWSERLANGUAGE), hidden] BSTR browserLanguage ();
    [propget, id (DISPID_IOMNAVIGATOR_USERLANGUAGE)] BSTR userLanguage ();
    [propget, id (DISPID_IOMNAVIGATOR_PLATFORM)] BSTR platform ();
    [propget, id (DISPID_IOMNAVIGATOR_APPMINORVERSION)] BSTR appMinorVersion ();
    [propget, id (DISPID_IOMNAVIGATOR_CONNECTIONSPEED), hidden] long connectionSpeed ();
    [propget, id (DISPID_IOMNAVIGATOR_ONLINE)] VARIANT_BOOL onLine ();
    [propget, id (DISPID_IOMNAVIGATOR_USERPROFILE)] IHTMLOpsProfile *userProfile ();
    [propget, id (DISPID_INAVIGATORGEOLOCATION_GEOLOCATION)] IWebGeolocation *geolocation ();
    [propget, id (DISPID_INAVIGATORDONOTTRACK_MSDONOTTRACK)] BSTR msDoNotTrack ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (FECEAAA6-8405-11cf-8ba1-00aa00476da6)] coclass HTMLNavigator {
    [default] dispinterface DispHTMLNavigator;
    interface IOmNavigator;
    interface INavigatorGeolocation;
    interface INavigatorDoNotTrack;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_COmNavigator;")
  [hidden, uuid (3050f54e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLLocation {
    properties:
    methods:
    [propput, id (DISPID_IHTMLLOCATION_HREF)] void href (BSTR v);
    [propget, id (DISPID_IHTMLLOCATION_HREF)] BSTR href ();
    [propput, id (DISPID_IHTMLLOCATION_PROTOCOL)] void protocol (BSTR v);
    [propget, id (DISPID_IHTMLLOCATION_PROTOCOL)] BSTR protocol ();
    [propput, id (DISPID_IHTMLLOCATION_HOST)] void host (BSTR v);
    [propget, id (DISPID_IHTMLLOCATION_HOST)] BSTR host ();
    [propput, id (DISPID_IHTMLLOCATION_HOSTNAME)] void hostname (BSTR v);
    [propget, id (DISPID_IHTMLLOCATION_HOSTNAME)] BSTR hostname ();
    [propput, id (DISPID_IHTMLLOCATION_PORT)] void port (BSTR v);
    [propget, id (DISPID_IHTMLLOCATION_PORT)] BSTR port ();
    [propput, id (DISPID_IHTMLLOCATION_PATHNAME)] void pathname (BSTR v);
    [propget, id (DISPID_IHTMLLOCATION_PATHNAME)] BSTR pathname ();
    [propput, id (DISPID_IHTMLLOCATION_SEARCH)] void search (BSTR v);
    [propget, id (DISPID_IHTMLLOCATION_SEARCH)] BSTR search ();
    [propput, id (DISPID_IHTMLLOCATION_HASH)] void hash (BSTR v);
    [propget, id (DISPID_IHTMLLOCATION_HASH)] BSTR hash ();
    [id (DISPID_IHTMLLOCATION_RELOAD)] void reload ([defaultvalue (0), in] VARIANT_BOOL flag);
    [id (DISPID_IHTMLLOCATION_REPLACE)] void replace ([in] BSTR bstr);
    [id (DISPID_IHTMLLOCATION_ASSIGN)] void assign ([in] BSTR bstr);
    [id (DISPID_IHTMLLOCATION_TOSTRING)] BSTR toString ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (163bb1e1-6e00-11cf-837a-48dc04c10000)] coclass HTMLLocation {
    [default] dispinterface DispHTMLLocation;
    interface IHTMLLocation;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_COmLocation;")
  [odl, oleautomation, dual, uuid (3050f4ce-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBookmarkCollection : IDispatch {
    [propget, id (DISPID_IHTMLBOOKMARKCOLLECTION_LENGTH), hidden] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLBOOKMARKCOLLECTION__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLBOOKMARKCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] VARIANT *pVarBookmark);
  };
  typedef enum _htmlPersistState {
    htmlPersistStateNormal = 0,
    htmlPersistStateFavorite = 1,
    htmlPersistStateHistory = 2,
    htmlPersistStateSnapshot = 3,
    htmlPersistStateUserData = 4,
    htmlPersistState_Max = 0x7FFFFFFF
  } htmlPersistState;

  typedef enum _htmlDropEffect {
    htmlDropEffectCopy = 0,
    htmlDropEffectLink = 1,
    htmlDropEffectMove = 2,
    htmlDropEffectNone = 3,
    htmlDropEffect_Max = 0x7FFFFFFF
  } htmlDropEffect;

  typedef enum _htmlEffectAllowed {
    htmlEffectAllowedCopy = 0,
    htmlEffectAllowedLink = 1,
    htmlEffectAllowedMove = 2,
    htmlEffectAllowedCopyLink = 3,
    htmlEffectAllowedCopyMove = 4,
    htmlEffectAllowedLinkMove = 5,
    htmlEffectAllowedAll = 6,
    htmlEffectAllowedNone = 7,
    htmlEffectAllowedUninitialized = 8,
    htmlEffectAllowed_Max = 0x7FFFFFFF
  } htmlEffectAllowed;
  [odl, oleautomation, dual, uuid (3050f4b3-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDataTransfer : IDispatch {
    [id (DISPID_IHTMLDATATRANSFER_SETDATA)] HRESULT setData ([in] BSTR format,[in] VARIANT *data,[retval, out] VARIANT_BOOL *pret);
    [id (DISPID_IHTMLDATATRANSFER_GETDATA)] HRESULT getData ([in] BSTR format,[retval, out] VARIANT *pvarRet);
    [id (DISPID_IHTMLDATATRANSFER_CLEARDATA)] HRESULT clearData ([in] BSTR format,[retval, out] VARIANT_BOOL *pret);
    [propput, id (DISPID_IHTMLDATATRANSFER_DROPEFFECT)] HRESULT dropEffect ([in] BSTR v);
    [propget, id (DISPID_IHTMLDATATRANSFER_DROPEFFECT)] HRESULT dropEffect ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDATATRANSFER_EFFECTALLOWED)] HRESULT effectAllowed ([in] BSTR v);
    [propget, id (DISPID_IHTMLDATATRANSFER_EFFECTALLOWED)] HRESULT effectAllowed ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f32d-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLEventObj : IDispatch {
    [propget, id (DISPID_IHTMLEVENTOBJ_SRCELEMENT)] HRESULT srcElement ([retval, out] IHTMLElement **p);
    [propget, id (DISPID_IHTMLEVENTOBJ_ALTKEY)] HRESULT altKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLEVENTOBJ_CTRLKEY)] HRESULT ctrlKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLEVENTOBJ_SHIFTKEY)] HRESULT shiftKey ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLEVENTOBJ_RETURNVALUE)] HRESULT returnValue ([in] VARIANT v);
    [propget, id (DISPID_IHTMLEVENTOBJ_RETURNVALUE)] HRESULT returnValue ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)] HRESULT cancelBubble ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)] HRESULT cancelBubble ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLEVENTOBJ_FROMELEMENT)] HRESULT fromElement ([retval, out] IHTMLElement **p);
    [propget, id (DISPID_IHTMLEVENTOBJ_TOELEMENT)] HRESULT toElement ([retval, out] IHTMLElement **p);
    [propput, id (DISPID_IHTMLEVENTOBJ_KEYCODE)] HRESULT keyCode ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ_KEYCODE)] HRESULT keyCode ([retval, out] long *p);
    [propget, id (DISPID_IHTMLEVENTOBJ_BUTTON)] HRESULT button ([retval, out] long *p);
    [propget, id (DISPID_IHTMLEVENTOBJ_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ_QUALIFIER)] HRESULT qualifier ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ_REASON)] HRESULT reason ([retval, out] long *p);
    [propget, id (DISPID_IHTMLEVENTOBJ_X)] HRESULT x ([retval, out] long *p);
    [propget, id (DISPID_IHTMLEVENTOBJ_Y)] HRESULT y ([retval, out] long *p);
    [propget, id (DISPID_IHTMLEVENTOBJ_CLIENTX)] HRESULT clientX ([retval, out] long *p);
    [propget, id (DISPID_IHTMLEVENTOBJ_CLIENTY)] HRESULT clientY ([retval, out] long *p);
    [propget, id (DISPID_IHTMLEVENTOBJ_OFFSETX)] HRESULT offsetX ([retval, out] long *p);
    [propget, id (DISPID_IHTMLEVENTOBJ_OFFSETY)] HRESULT offsetY ([retval, out] long *p);
    [propget, id (DISPID_IHTMLEVENTOBJ_SCREENX)] HRESULT screenX ([retval, out] long *p);
    [propget, id (DISPID_IHTMLEVENTOBJ_SCREENY)] HRESULT screenY ([retval, out] long *p);
    [propget, id (DISPID_IHTMLEVENTOBJ_SRCFILTER)] HRESULT srcFilter ([retval, out] IDispatch **p);
  };
  [odl, oleautomation, dual, uuid (3050f48b-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLEventObj2 : IDispatch {
    [id (DISPID_IHTMLEVENTOBJ2_SETATTRIBUTE)] HRESULT setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLEVENTOBJ2_GETATTRIBUTE)] HRESULT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags,[defaultvalue (0), retval, out] VARIANT *AttributeValue);
    [id (DISPID_IHTMLEVENTOBJ2_REMOVEATTRIBUTE)] HRESULT removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags,[defaultvalue (0), retval, out] VARIANT_BOOL *pfSuccess);
    [propput, id (DISPID_IHTMLEVENTOBJ2_PROPERTYNAME)] HRESULT propertyName ([in] BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_PROPERTYNAME)] HRESULT propertyName ([retval, out] BSTR *p);
    [propputref, id (DISPID_IHTMLEVENTOBJ2_BOOKMARKS)] HRESULT bookmarks ([in] IHTMLBookmarkCollection *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_BOOKMARKS)] HRESULT bookmarks ([retval, out] IHTMLBookmarkCollection **p);
    [propputref, id (DISPID_IHTMLEVENTOBJ2_RECORDSET)] HRESULT recordset ([in] IDispatch *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_RECORDSET)] HRESULT recordset ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_DATAFLD)] HRESULT dataFld ([in] BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_DATAFLD)] HRESULT dataFld ([retval, out] BSTR *p);
    [propputref, id (DISPID_IHTMLEVENTOBJ2_BOUNDELEMENTS)] HRESULT boundElements ([in] IHTMLElementCollection *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_BOUNDELEMENTS)] HRESULT boundElements ([retval, out] IHTMLElementCollection **p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_REPEAT)] HRESULT repeat ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_REPEAT)] HRESULT repeat ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_SRCURN)] HRESULT srcUrn ([in] BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SRCURN)] HRESULT srcUrn ([retval, out] BSTR *p);
    [propputref, id (DISPID_IHTMLEVENTOBJ2_SRCELEMENT)] HRESULT srcElement ([in] IHTMLElement *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SRCELEMENT)] HRESULT srcElement ([retval, out] IHTMLElement **p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_ALTKEY)] HRESULT altKey ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_ALTKEY)] HRESULT altKey ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_CTRLKEY)] HRESULT ctrlKey ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_CTRLKEY)] HRESULT ctrlKey ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_SHIFTKEY)] HRESULT shiftKey ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SHIFTKEY)] HRESULT shiftKey ([retval, out] VARIANT_BOOL *p);
    [propputref, id (DISPID_IHTMLEVENTOBJ2_FROMELEMENT)] HRESULT fromElement ([in] IHTMLElement *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_FROMELEMENT)] HRESULT fromElement ([retval, out] IHTMLElement **p);
    [propputref, id (DISPID_IHTMLEVENTOBJ2_TOELEMENT)] HRESULT toElement ([in] IHTMLElement *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_TOELEMENT)] HRESULT toElement ([retval, out] IHTMLElement **p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_BUTTON)] HRESULT button ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_BUTTON)] HRESULT button ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_TYPE)] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_QUALIFIER)] HRESULT qualifier ([in] BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_QUALIFIER)] HRESULT qualifier ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_REASON)] HRESULT reason ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_REASON)] HRESULT reason ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_X)] HRESULT x ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_X)] HRESULT x ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_Y)] HRESULT y ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_Y)] HRESULT y ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_CLIENTX)] HRESULT clientX ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_CLIENTX)] HRESULT clientX ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_CLIENTY)] HRESULT clientY ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_CLIENTY)] HRESULT clientY ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_OFFSETX)] HRESULT offsetX ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_OFFSETX)] HRESULT offsetX ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_OFFSETY)] HRESULT offsetY ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_OFFSETY)] HRESULT offsetY ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_SCREENX)] HRESULT screenX ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SCREENX)] HRESULT screenX ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_SCREENY)] HRESULT screenY ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SCREENY)] HRESULT screenY ([retval, out] long *p);
    [propputref, id (DISPID_IHTMLEVENTOBJ2_SRCFILTER)] HRESULT srcFilter ([in] IDispatch *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SRCFILTER)] HRESULT srcFilter ([retval, out] IDispatch **p);
    [propget, id (DISPID_IHTMLEVENTOBJ2_DATATRANSFER)] HRESULT dataTransfer ([retval, out] IHTMLDataTransfer **p);
  };
  [odl, oleautomation, dual, uuid (3050f680-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLEventObj3 : IDispatch {
    [propget, id (DISPID_IHTMLEVENTOBJ3_CONTENTOVERFLOW)] HRESULT contentOverflow ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLEVENTOBJ3_SHIFTLEFT)] HRESULT shiftLeft ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ3_SHIFTLEFT)] HRESULT shiftLeft ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLEVENTOBJ3_ALTLEFT)] HRESULT altLeft ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ3_ALTLEFT)] HRESULT altLeft ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLEVENTOBJ3_CTRLLEFT)] HRESULT ctrlLeft ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ3_CTRLLEFT)] HRESULT ctrlLeft ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_IMECOMPOSITIONCHANGE), hidden, restricted, nonbrowsable] HRESULT imeCompositionChange ([retval, out] LONG_PTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_IMENOTIFYCOMMAND), hidden, restricted, nonbrowsable] HRESULT imeNotifyCommand ([retval, out] LONG_PTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_IMENOTIFYDATA), hidden, restricted, nonbrowsable] HRESULT imeNotifyData ([retval, out] LONG_PTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_IMEREQUEST), hidden, restricted, nonbrowsable] HRESULT imeRequest ([retval, out] LONG_PTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_IMEREQUESTDATA), hidden, restricted, nonbrowsable] HRESULT imeRequestData ([retval, out] LONG_PTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_KEYBOARDLAYOUT), hidden, restricted, nonbrowsable] HRESULT keyboardLayout ([retval, out] LONG_PTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_BEHAVIORCOOKIE)] HRESULT behaviorCookie ([retval, out] long *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_BEHAVIORPART)] HRESULT behaviorPart ([retval, out] long *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_NEXTPAGE)] HRESULT nextPage ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f814-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLEventObj4 : IDispatch {
    [propget, id (DISPID_IHTMLEVENTOBJ4_WHEELDELTA)] HRESULT wheelDelta ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (30510478-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLEventObj5 : IDispatch {
    [propput, id (DISPID_IHTMLEVENTOBJ5_URL)] HRESULT url ([in] BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ5_URL)] HRESULT url ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLEVENTOBJ5_DATA)] HRESULT data ([in] BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ5_DATA)] HRESULT data ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ5_SOURCE)] HRESULT source ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLEVENTOBJ5_ORIGIN)] HRESULT origin ([in] BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ5_ORIGIN)] HRESULT origin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLEVENTOBJ5_ISSESSION), hidden, restricted, nonbrowsable] HRESULT issession ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ5_ISSESSION), hidden, restricted, nonbrowsable] HRESULT issession ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (30510734-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLEventObj6 : IDispatch {
    [propget, id (DISPID_IHTMLEVENTOBJ6_ACTIONURL)] HRESULT actionURL ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ6_BUTTONID)] HRESULT buttonID ([retval, out] long *p);
  };
  [hidden, uuid (3050f558-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispCEventObj {
    properties:
    methods:
    [propput, id (DISPID_IHTMLEVENTOBJ_RETURNVALUE)] void returnValue (VARIANT v);
    [propget, id (DISPID_IHTMLEVENTOBJ_RETURNVALUE)] VARIANT returnValue ();
    [propput, id (DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propput, id (DISPID_IHTMLEVENTOBJ_KEYCODE)] void keyCode (long v);
    [propget, id (DISPID_IHTMLEVENTOBJ_KEYCODE)] long keyCode ();
    [id (DISPID_IHTMLEVENTOBJ2_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLEVENTOBJ2_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLEVENTOBJ2_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLEVENTOBJ2_PROPERTYNAME)] void propertyName (BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_PROPERTYNAME)] BSTR propertyName ();
    [propputref, id (DISPID_IHTMLEVENTOBJ2_BOOKMARKS)] void bookmarks (IHTMLBookmarkCollection *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_BOOKMARKS)] IHTMLBookmarkCollection *bookmarks ();
    [propputref, id (DISPID_IHTMLEVENTOBJ2_RECORDSET)] void recordset (IDispatch *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_RECORDSET)] IDispatch *recordset ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_DATAFLD)] BSTR dataFld ();
    [propputref, id (DISPID_IHTMLEVENTOBJ2_BOUNDELEMENTS)] void boundElements (IHTMLElementCollection *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_BOUNDELEMENTS)] IHTMLElementCollection *boundElements ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_REPEAT)] void repeat (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_REPEAT)] VARIANT_BOOL repeat ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_SRCURN)] void srcUrn (BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SRCURN)] BSTR srcUrn ();
    [propputref, id (DISPID_IHTMLEVENTOBJ2_SRCELEMENT)] void srcElement (IHTMLElement *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SRCELEMENT)] IHTMLElement *srcElement ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_ALTKEY)] void altKey (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_ALTKEY)] VARIANT_BOOL altKey ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_CTRLKEY)] void ctrlKey (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_CTRLKEY)] VARIANT_BOOL ctrlKey ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_SHIFTKEY)] void shiftKey (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SHIFTKEY)] VARIANT_BOOL shiftKey ();
    [propputref, id (DISPID_IHTMLEVENTOBJ2_FROMELEMENT)] void fromElement (IHTMLElement *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_FROMELEMENT)] IHTMLElement *fromElement ();
    [propputref, id (DISPID_IHTMLEVENTOBJ2_TOELEMENT)] void toElement (IHTMLElement *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_TOELEMENT)] IHTMLElement *toElement ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_BUTTON)] void button (long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_BUTTON)] long button ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_TYPE)] void type (BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_TYPE)] BSTR type ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_QUALIFIER)] void qualifier (BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_QUALIFIER)] BSTR qualifier ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_REASON)] void reason (long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_REASON)] long reason ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_X)] void x (long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_X)] long x ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_Y)] void y (long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_Y)] long y ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_CLIENTX)] void clientX (long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_CLIENTX)] long clientX ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_CLIENTY)] void clientY (long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_CLIENTY)] long clientY ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_OFFSETX)] void offsetX (long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_OFFSETX)] long offsetX ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_OFFSETY)] void offsetY (long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_OFFSETY)] long offsetY ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_SCREENX)] void screenX (long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SCREENX)] long screenX ();
    [propput, id (DISPID_IHTMLEVENTOBJ2_SCREENY)] void screenY (long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SCREENY)] long screenY ();
    [propputref, id (DISPID_IHTMLEVENTOBJ2_SRCFILTER)] void srcFilter (IDispatch *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SRCFILTER)] IDispatch *srcFilter ();
    [propget, id (DISPID_IHTMLEVENTOBJ2_DATATRANSFER)] IHTMLDataTransfer *dataTransfer ();
    [propget, id (DISPID_IHTMLEVENTOBJ3_CONTENTOVERFLOW)] VARIANT_BOOL contentOverflow ();
    [propput, id (DISPID_IHTMLEVENTOBJ3_SHIFTLEFT)] void shiftLeft (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ3_SHIFTLEFT)] VARIANT_BOOL shiftLeft ();
    [propput, id (DISPID_IHTMLEVENTOBJ3_ALTLEFT)] void altLeft (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ3_ALTLEFT)] VARIANT_BOOL altLeft ();
    [propput, id (DISPID_IHTMLEVENTOBJ3_CTRLLEFT)] void ctrlLeft (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ3_CTRLLEFT)] VARIANT_BOOL ctrlLeft ();
    [propget, id (DISPID_IHTMLEVENTOBJ3_IMECOMPOSITIONCHANGE), hidden, restricted, nonbrowsable] LONG_PTR imeCompositionChange ();
    [propget, id (DISPID_IHTMLEVENTOBJ3_IMENOTIFYCOMMAND), hidden, restricted, nonbrowsable] LONG_PTR imeNotifyCommand ();
    [propget, id (DISPID_IHTMLEVENTOBJ3_IMENOTIFYDATA), hidden, restricted, nonbrowsable] LONG_PTR imeNotifyData ();
    [propget, id (DISPID_IHTMLEVENTOBJ3_IMEREQUEST), hidden, restricted, nonbrowsable] LONG_PTR imeRequest ();
    [propget, id (DISPID_IHTMLEVENTOBJ3_IMEREQUESTDATA), hidden, restricted, nonbrowsable] LONG_PTR imeRequestData ();
    [propget, id (DISPID_IHTMLEVENTOBJ3_KEYBOARDLAYOUT), hidden, restricted, nonbrowsable] LONG_PTR keyboardLayout ();
    [propget, id (DISPID_IHTMLEVENTOBJ3_BEHAVIORCOOKIE)] long behaviorCookie ();
    [propget, id (DISPID_IHTMLEVENTOBJ3_BEHAVIORPART)] long behaviorPart ();
    [propget, id (DISPID_IHTMLEVENTOBJ3_NEXTPAGE)] BSTR nextPage ();
    [propget, id (DISPID_IHTMLEVENTOBJ4_WHEELDELTA)] long wheelDelta ();
    [propput, id (DISPID_IHTMLEVENTOBJ5_URL)] void url (BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ5_URL)] BSTR url ();
    [propput, id (DISPID_IHTMLEVENTOBJ5_DATA)] void data (BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ5_DATA)] BSTR data ();
    [propget, id (DISPID_IHTMLEVENTOBJ5_SOURCE)] IDispatch *source ();
    [propput, id (DISPID_IHTMLEVENTOBJ5_ORIGIN)] void origin (BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ5_ORIGIN)] BSTR origin ();
    [propput, id (DISPID_IHTMLEVENTOBJ5_ISSESSION), hidden, restricted, nonbrowsable] void issession (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ5_ISSESSION), hidden, restricted, nonbrowsable] VARIANT_BOOL issession ();
    [propget, id (DISPID_IHTMLEVENTOBJ6_ACTIONURL)] BSTR actionURL ();
    [propget, id (DISPID_IHTMLEVENTOBJ6_BUTTONID)] long buttonID ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f48a-98b5-11cf-bb82-00aa00bdce0b)] coclass CEventObj {
    [default] dispinterface DispCEventObj;
    interface IHTMLEventObj;
    interface IHTMLEventObj2;
    interface IHTMLEventObj3;
    interface IHTMLEventObj4;
    interface IHTMLEventObj5;
    interface IHTMLEventObj6;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CEventObj;")
  [odl, oleautomation, dual, uuid (3051074b-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleMedia : IDispatch {
    [propget, id (DISPID_IHTMLSTYLEMEDIA_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [id (DISPID_IHTMLSTYLEMEDIA_MATCHMEDIUM)] HRESULT matchMedium ([in] BSTR mediaQuery,[retval, out] VARIANT_BOOL *matches);
  };
  [hidden, uuid (3059009e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLStyleMedia {
    properties:
    methods:
    [propget, id (DISPID_IHTMLSTYLEMEDIA_TYPE)] BSTR type ();
    [id (DISPID_IHTMLSTYLEMEDIA_MATCHMEDIUM)] VARIANT_BOOL matchMedium ([in] BSTR mediaQuery);
  };
  [noncreatable, uuid (3051074c-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStyleMedia {
    [default] dispinterface DispHTMLStyleMedia;
    interface IHTMLStyleMedia;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStyleMedia;")
  [hidden, uuid (3050f5a1-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLWindowEvents3 {
    properties:
    methods:
    [id (DISPID_HTMLWINDOWEVENTS3_ONHASHCHANGE)] void onhashchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLWINDOWEVENTS3_ONMESSAGE)] void onmessage ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f625-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLWindowEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLWINDOWEVENTS2_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLWINDOWEVENTS2_ONUNLOAD)] void onunload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLWINDOWEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLWINDOWEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLWINDOWEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLWINDOWEVENTS2_ONERROR)] void onerror ([in] BSTR description,[in] BSTR url,[in] long line);
    [id (DISPID_HTMLWINDOWEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLWINDOWEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLWINDOWEVENTS2_ONBEFOREUNLOAD)] void onbeforeunload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLWINDOWEVENTS2_ONBEFOREPRINT)] void onbeforeprint ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLWINDOWEVENTS2_ONAFTERPRINT)] void onafterprint ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (96a0a4e0-D062-11cf-94b6-00aa0060275c)] dispinterface HTMLWindowEvents {
    properties:
    methods:
    [id (DISPID_HTMLWINDOWEVENTS_ONLOAD)] void onload ();
    [id (DISPID_HTMLWINDOWEVENTS_ONUNLOAD)] void onunload ();
    [id (DISPID_HTMLWINDOWEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLWINDOWEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLWINDOWEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLWINDOWEVENTS_ONERROR)] void onerror ([in] BSTR description,[in] BSTR url,[in] long line);
    [id (DISPID_HTMLWINDOWEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLWINDOWEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLWINDOWEVENTS_ONBEFOREUNLOAD)] void onbeforeunload ();
    [id (DISPID_HTMLWINDOWEVENTS_ONBEFOREPRINT)] void onbeforeprint ();
    [id (DISPID_HTMLWINDOWEVENTS_ONAFTERPRINT)] void onafterprint ();
  };
  interface IHTMLDocument;
  interface IHTMLDocument2;
  interface IHTMLFramesCollection2;
  interface IHTMLWindow2;
  interface IHTMLWindow3;
  interface IHTMLFrameBase;
  interface IHTMLStorage;
  interface IHTMLPerformance;
  interface IHTMLCSSStyleDeclaration;
  interface IHTMLApplicationCache;
  [odl, oleautomation, dual, uuid (332c4426-26cb-11d0-b483-00c04fd90119)] interface IHTMLFramesCollection2 : IDispatch {
    [id (DISPID_IHTMLFRAMESCOLLECTION2_ITEM)] HRESULT item ([in] VARIANT *pvarIndex,[retval, out] VARIANT *pvarResult);
    [propget, id (DISPID_IHTMLFRAMESCOLLECTION2_LENGTH)] HRESULT length ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (3050f35c-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLScreen : IDispatch {
    [propget, id (DISPID_IHTMLSCREEN_COLORDEPTH)] HRESULT colorDepth ([retval, out] long *p);
    [propput, id (DISPID_IHTMLSCREEN_BUFFERDEPTH)] HRESULT bufferDepth ([in] long v);
    [propget, id (DISPID_IHTMLSCREEN_BUFFERDEPTH)] HRESULT bufferDepth ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSCREEN_WIDTH)] HRESULT width ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSCREEN_HEIGHT)] HRESULT height ([retval, out] long *p);
    [propput, id (DISPID_IHTMLSCREEN_UPDATEINTERVAL)] HRESULT updateInterval ([in] long v);
    [propget, id (DISPID_IHTMLSCREEN_UPDATEINTERVAL)] HRESULT updateInterval ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSCREEN_AVAILHEIGHT)] HRESULT availHeight ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSCREEN_AVAILWIDTH)] HRESULT availWidth ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSCREEN_FONTSMOOTHINGENABLED)] HRESULT fontSmoothingEnabled ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (3050f84a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLScreen2 : IDispatch {
    [propget, id (DISPID_IHTMLSCREEN2_LOGICALXDPI)] HRESULT logicalXDPI ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSCREEN2_LOGICALYDPI)] HRESULT logicalYDPI ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSCREEN2_DEVICEXDPI)] HRESULT deviceXDPI ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSCREEN2_DEVICEYDPI)] HRESULT deviceYDPI ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (305104a1-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLScreen3 : IDispatch {
    [propget, id (DISPID_IHTMLSCREEN3_SYSTEMXDPI)] HRESULT systemXDPI ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSCREEN3_SYSTEMYDPI)] HRESULT systemYDPI ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (3051076b-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLScreen4 : IDispatch {
    [propget, id (DISPID_IHTMLSCREEN4_PIXELDEPTH)] HRESULT pixelDepth ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (332c4427-26cb-11d0-b483-00c04fd90119)] interface IHTMLWindow2 : IHTMLFramesCollection2 {
    [propget, id (DISPID_IHTMLWINDOW2_FRAMES)] HRESULT frames ([retval, out] IHTMLFramesCollection2 **p);
    [propput, id (DISPID_IHTMLWINDOW2_DEFAULTSTATUS)] HRESULT defaultStatus ([in] BSTR v);
    [propget, id (DISPID_IHTMLWINDOW2_DEFAULTSTATUS)] HRESULT defaultStatus ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLWINDOW2_STATUS)] HRESULT status ([in] BSTR v);
    [propget, id (DISPID_IHTMLWINDOW2_STATUS)] HRESULT status ([retval, out] BSTR *p);
    [id (DISPID_IHTMLWINDOW2_SETTIMEOUT)] HRESULT setTimeout ([in] BSTR expression,[in] long msec,[optional, in] VARIANT *language,[retval, out] long *timerID);
    [id (DISPID_IHTMLWINDOW2_CLEARTIMEOUT)] HRESULT clearTimeout ([in] long timerID);
    [id (DISPID_IHTMLWINDOW2_ALERT)] HRESULT alert ([defaultvalue (L""), in] BSTR message);
    [id (DISPID_IHTMLWINDOW2_CONFIRM)] HRESULT confirm ([defaultvalue (L""), in] BSTR message,[defaultvalue (0), retval, out] VARIANT_BOOL *confirmed);
    [id (DISPID_IHTMLWINDOW2_PROMPT)] HRESULT prompt ([defaultvalue (L""), in] BSTR message,[defaultvalue (L"undefined"), in] BSTR defstr,[defaultvalue (0), retval, out] VARIANT *textdata);
    [propget, id (DISPID_IHTMLWINDOW2_IMAGE)] HRESULT Image ([retval, out] IHTMLImageElementFactory **p);
    [propget, id (DISPID_IHTMLWINDOW2_LOCATION)] HRESULT location ([retval, out] IHTMLLocation **p);
    [propget, id (DISPID_IHTMLWINDOW2_HISTORY)] HRESULT history ([retval, out] IOmHistory **p);
    [id (DISPID_IHTMLWINDOW2_CLOSE)] HRESULT close ();
    [propput, id (DISPID_IHTMLWINDOW2_OPENER)] HRESULT opener ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_OPENER)] HRESULT opener ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLWINDOW2_NAVIGATOR)] HRESULT navigator ([retval, out] IOmNavigator **p);
    [propput, id (DISPID_IHTMLWINDOW2_NAME)] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLWINDOW2_NAME)] HRESULT name ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLWINDOW2_PARENT)] HRESULT parent ([retval, out] IHTMLWindow2 **p);
    [id (DISPID_IHTMLWINDOW2_OPEN)] HRESULT open ([defaultvalue (L""), in] BSTR url,[defaultvalue (L""), in] BSTR name,[defaultvalue (L""), in] BSTR features,[defaultvalue (0), in] VARIANT_BOOL replace,[defaultvalue (0), retval, out] IHTMLWindow2 **pomWindowResult);
    [propget, id (DISPID_IHTMLWINDOW2_SELF)] HRESULT self ([retval, out] IHTMLWindow2 **p);
    [propget, id (DISPID_IHTMLWINDOW2_TOP)] HRESULT top ([retval, out] IHTMLWindow2 **p);
    [propget, id (DISPID_IHTMLWINDOW2_WINDOW)] HRESULT window ([retval, out] IHTMLWindow2 **p);
    [id (DISPID_IHTMLWINDOW2_NAVIGATE)] HRESULT navigate ([in] BSTR url);
    [propput, id (DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable] HRESULT onfocus ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable] HRESULT onfocus ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable] HRESULT onblur ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable] HRESULT onblur ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW2_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable] HRESULT onbeforeunload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable] HRESULT onbeforeunload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable] HRESULT onunload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable] HRESULT onunload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable] HRESULT onhelp ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable] HRESULT onhelp ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable] HRESULT onerror ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable] HRESULT onresize ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable] HRESULT onresize ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable] HRESULT onscroll ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable] HRESULT onscroll ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLWINDOW2_DOCUMENT), source] HRESULT document ([retval, out] IHTMLDocument2 **p);
    [propget, id (DISPID_IHTMLWINDOW2_EVENT)] HRESULT event ([retval, out] IHTMLEventObj **p);
    [propget, id (DISPID_IHTMLWINDOW2__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLWINDOW2_SHOWMODALDIALOG)] HRESULT showModalDialog ([in] BSTR dialog,[optional, in] VARIANT *varArgIn,[optional, in] VARIANT *varOptions,[retval, out] VARIANT *varArgOut);
    [id (DISPID_IHTMLWINDOW2_SHOWHELP)] HRESULT showHelp ([in] BSTR helpURL,[optional, in] VARIANT helpArg,[defaultvalue (L""), in] BSTR features);
    [propget, id (DISPID_IHTMLWINDOW2_SCREEN)] HRESULT screen ([retval, out] IHTMLScreen **p);
    [propget, id (DISPID_IHTMLWINDOW2_OPTION)] HRESULT Option ([retval, out] IHTMLOptionElementFactory **p);
    [id (DISPID_IHTMLWINDOW2_FOCUS)] HRESULT focus ();
    [propget, id (DISPID_IHTMLWINDOW2_CLOSED)] HRESULT closed ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLWINDOW2_BLUR)] HRESULT blur ();
    [id (DISPID_IHTMLWINDOW2_SCROLL)] HRESULT scroll ([in] long x,[in] long y);
    [propget, id (DISPID_IHTMLWINDOW2_CLIENTINFORMATION)] HRESULT clientInformation ([retval, out] IOmNavigator **p);
    [id (DISPID_IHTMLWINDOW2_SETINTERVAL)] HRESULT setInterval ([in] BSTR expression,[in] long msec,[optional, in] VARIANT *language,[retval, out] long *timerID);
    [id (DISPID_IHTMLWINDOW2_CLEARINTERVAL)] HRESULT clearInterval ([in] long timerID);
    [propput, id (DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)] HRESULT offscreenBuffering ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)] HRESULT offscreenBuffering ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLWINDOW2_EXECSCRIPT)] HRESULT execScript ([in] BSTR code,[defaultvalue (L"JScript"), in] BSTR language,[defaultvalue (0), retval, out] VARIANT *pvarRet);
    [id (DISPID_IHTMLWINDOW2_TOSTRING)] HRESULT toString ([retval, out] BSTR *String);
    [id (DISPID_IHTMLWINDOW2_SCROLLBY)] HRESULT scrollBy ([in] long x,[in] long y);
    [id (DISPID_IHTMLWINDOW2_SCROLLTO)] HRESULT scrollTo ([in] long x,[in] long y);
    [id (DISPID_IHTMLWINDOW2_MOVETO)] HRESULT moveTo ([in] long x,[in] long y);
    [id (DISPID_IHTMLWINDOW2_MOVEBY)] HRESULT moveBy ([in] long x,[in] long y);
    [id (DISPID_IHTMLWINDOW2_RESIZETO)] HRESULT resizeTo ([in] long x,[in] long y);
    [id (DISPID_IHTMLWINDOW2_RESIZEBY)] HRESULT resizeBy ([in] long x,[in] long y);
    [propget, id (DISPID_IHTMLWINDOW2_EXTERNAL)] HRESULT external ([retval, out] IDispatch **p);
  };
  [odl, oleautomation, dual, uuid (3050f4ae-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLWindow3 : IDispatch {
    [propget, id (DISPID_IHTMLWINDOW3_SCREENLEFT)] HRESULT screenLeft ([retval, out] long *p);
    [propget, id (DISPID_IHTMLWINDOW3_SCREENTOP)] HRESULT screenTop ([retval, out] long *p);
    [id (DISPID_IHTMLWINDOW3_ATTACHEVENT)] HRESULT attachEvent ([in] BSTR event,[in] IDispatch *pDisp,[retval, out] VARIANT_BOOL *pfResult);
    [id (DISPID_IHTMLWINDOW3_DETACHEVENT)] HRESULT detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLWINDOW3_SETTIMEOUT)] HRESULT setTimeout ([in] VARIANT *expression,[in] long msec,[optional, in] VARIANT *language,[retval, out] long *timerID);
    [id (DISPID_IHTMLWINDOW3_SETINTERVAL)] HRESULT setInterval ([in] VARIANT *expression,[in] long msec,[optional, in] VARIANT *language,[retval, out] long *timerID);
    [id (DISPID_IHTMLWINDOW3_PRINT)] HRESULT print ();
    [propput, id (DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable] HRESULT onbeforeprint ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable] HRESULT onbeforeprint ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable] HRESULT onafterprint ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable] HRESULT onafterprint ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLWINDOW3_CLIPBOARDDATA)] HRESULT clipboardData ([retval, out] IHTMLDataTransfer **p);
    [id (DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG)] HRESULT showModelessDialog ([defaultvalue (L""), in] BSTR url,[defaultvalue (0), optional, in] VARIANT *varArgIn,[defaultvalue (0), optional, in] VARIANT *options,[defaultvalue (0), retval, out] IHTMLWindow2 **pDialog);
  };
  [odl, oleautomation, dual, uuid (3050f6cf-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLWindow4 : IDispatch {
    [id (DISPID_IHTMLWINDOW4_CREATEPOPUP)] HRESULT createPopup ([optional, in] VARIANT *varArgIn,[retval, out] IDispatch **ppPopup);
    [propget, id (DISPID_IHTMLWINDOW4_FRAMEELEMENT)] HRESULT frameElement ([retval, out] IHTMLFrameBase **p);
  };
  [odl, oleautomation, dual, uuid (3051040e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLWindow5 : IDispatch {
    [propput, id (DISPID_IHTMLWINDOW5_XMLHTTPREQUEST)] HRESULT XMLHttpRequest ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW5_XMLHTTPREQUEST)] HRESULT XMLHttpRequest ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (30510453-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLWindow6 : IDispatch {
    [propput, id (DISPID_IHTMLWINDOW6_XDOMAINREQUEST)] HRESULT XDomainRequest ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW6_XDOMAINREQUEST)] HRESULT XDomainRequest ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLWINDOW6_SESSIONSTORAGE)] HRESULT sessionStorage ([retval, out] IHTMLStorage **p);
    [propget, id (DISPID_IHTMLWINDOW6_LOCALSTORAGE)] HRESULT localStorage ([retval, out] IHTMLStorage **p);
    [propput, id (DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable] HRESULT onhashchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable] HRESULT onhashchange ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLWINDOW6_MAXCONNECTIONSPERSERVER)] HRESULT maxConnectionsPerServer ([retval, out] long *p);
    [id (DISPID_IHTMLWINDOW6_POSTMESSAGE)] HRESULT postMessage ([in] BSTR msg,[optional, in] VARIANT targetOrigin);
    [id (DISPID_IHTMLWINDOW6_TOSTATICHTML)] HRESULT toStaticHTML ([in] BSTR bstrHTML,[retval, out] BSTR *pbstrStaticHTML);
    [propput, id (DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable] HRESULT onmessage ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable] HRESULT onmessage ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLWINDOW6_MSWRITEPROFILERMARK)] HRESULT msWriteProfilerMark ([in] BSTR bstrProfilerMarkName);
  };
  [odl, oleautomation, dual, uuid (305104b7-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLWindow7 : IDispatch {
    [id (DISPID_IHTMLWINDOW7_GETSELECTION)] HRESULT getSelection ([retval, out] IHTMLSelection **ppIHTMLSelection);
    [id (DISPID_IHTMLWINDOW7_GETCOMPUTEDSTYLE)] HRESULT getComputedStyle ([in] IHTMLDOMNode *varArgIn,[defaultvalue (L""), in] BSTR bstrPseudoElt,[defaultvalue (0), retval, out] IHTMLCSSStyleDeclaration **ppComputedStyle);
    [propget, id (DISPID_IHTMLWINDOW7_STYLEMEDIA)] HRESULT styleMedia ([retval, out] IHTMLStyleMedia **p);
    [propput, id (DISPID_IHTMLWINDOW7_PERFORMANCE)] HRESULT performance ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_PERFORMANCE)] HRESULT performance ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLWINDOW7_INNERWIDTH)] HRESULT innerWidth ([retval, out] long *p);
    [propget, id (DISPID_IHTMLWINDOW7_INNERHEIGHT)] HRESULT innerHeight ([retval, out] long *p);
    [propget, id (DISPID_IHTMLWINDOW7_PAGEXOFFSET)] HRESULT pageXOffset ([retval, out] long *p);
    [propget, id (DISPID_IHTMLWINDOW7_PAGEYOFFSET)] HRESULT pageYOffset ([retval, out] long *p);
    [propget, id (DISPID_IHTMLWINDOW7_SCREENX)] HRESULT screenX ([retval, out] long *p);
    [propget, id (DISPID_IHTMLWINDOW7_SCREENY)] HRESULT screenY ([retval, out] long *p);
    [propget, id (DISPID_IHTMLWINDOW7_OUTERWIDTH)] HRESULT outerWidth ([retval, out] long *p);
    [propget, id (DISPID_IHTMLWINDOW7_OUTERHEIGHT)] HRESULT outerHeight ([retval, out] long *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONABORT), displaybind, bindable] HRESULT onabort ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONABORT), displaybind, bindable] HRESULT onabort ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONCANPLAY), displaybind, bindable] HRESULT oncanplay ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCANPLAY), displaybind, bindable] HRESULT oncanplay ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONCANPLAYTHROUGH), displaybind, bindable] HRESULT oncanplaythrough ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCANPLAYTHROUGH), displaybind, bindable] HRESULT oncanplaythrough ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONCHANGE), displaybind, bindable] HRESULT onchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCHANGE), displaybind, bindable] HRESULT onchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONCLICK), displaybind, bindable] HRESULT onclick ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCLICK), displaybind, bindable] HRESULT onclick ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONCONTEXTMENU), displaybind, bindable] HRESULT oncontextmenu ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCONTEXTMENU), displaybind, bindable] HRESULT oncontextmenu ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDBLCLICK), displaybind, bindable] HRESULT ondblclick ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDBLCLICK), displaybind, bindable] HRESULT ondblclick ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAG), displaybind, bindable] HRESULT ondrag ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAG), displaybind, bindable] HRESULT ondrag ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGEND), displaybind, bindable] HRESULT ondragend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGEND), displaybind, bindable] HRESULT ondragend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGENTER), displaybind, bindable] HRESULT ondragenter ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGENTER), displaybind, bindable] HRESULT ondragenter ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGLEAVE), displaybind, bindable] HRESULT ondragleave ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGLEAVE), displaybind, bindable] HRESULT ondragleave ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGOVER), displaybind, bindable] HRESULT ondragover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGOVER), displaybind, bindable] HRESULT ondragover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGSTART), displaybind, bindable] HRESULT ondragstart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGSTART), displaybind, bindable] HRESULT ondragstart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDROP), displaybind, bindable] HRESULT ondrop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDROP), displaybind, bindable] HRESULT ondrop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDURATIONCHANGE), displaybind, bindable] HRESULT ondurationchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDURATIONCHANGE), displaybind, bindable] HRESULT ondurationchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONFOCUSIN), displaybind, bindable] HRESULT onfocusin ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONFOCUSIN), displaybind, bindable] HRESULT onfocusin ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONFOCUSOUT), displaybind, bindable] HRESULT onfocusout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONFOCUSOUT), displaybind, bindable] HRESULT onfocusout ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONINPUT), displaybind, bindable] HRESULT oninput ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONINPUT), displaybind, bindable] HRESULT oninput ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONEMPTIED), displaybind, bindable] HRESULT onemptied ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONEMPTIED), displaybind, bindable] HRESULT onemptied ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONENDED), displaybind, bindable] HRESULT onended ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONENDED), displaybind, bindable] HRESULT onended ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONKEYDOWN), displaybind, bindable] HRESULT onkeydown ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONKEYDOWN), displaybind, bindable] HRESULT onkeydown ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONKEYPRESS), displaybind, bindable] HRESULT onkeypress ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONKEYPRESS), displaybind, bindable] HRESULT onkeypress ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONKEYUP), displaybind, bindable] HRESULT onkeyup ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONKEYUP), displaybind, bindable] HRESULT onkeyup ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONLOADEDDATA), displaybind, bindable] HRESULT onloadeddata ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONLOADEDDATA), displaybind, bindable] HRESULT onloadeddata ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONLOADEDMETADATA), displaybind, bindable] HRESULT onloadedmetadata ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONLOADEDMETADATA), displaybind, bindable] HRESULT onloadedmetadata ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONLOADSTART), displaybind, bindable] HRESULT onloadstart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONLOADSTART), displaybind, bindable] HRESULT onloadstart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEDOWN), displaybind, bindable] HRESULT onmousedown ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEDOWN), displaybind, bindable] HRESULT onmousedown ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEENTER), displaybind, bindable] HRESULT onmouseenter ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEENTER), displaybind, bindable] HRESULT onmouseenter ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSELEAVE), displaybind, bindable] HRESULT onmouseleave ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSELEAVE), displaybind, bindable] HRESULT onmouseleave ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEMOVE), displaybind, bindable] HRESULT onmousemove ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEMOVE), displaybind, bindable] HRESULT onmousemove ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEOUT), displaybind, bindable] HRESULT onmouseout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEOUT), displaybind, bindable] HRESULT onmouseout ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEOVER), displaybind, bindable] HRESULT onmouseover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEOVER), displaybind, bindable] HRESULT onmouseover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEUP), displaybind, bindable] HRESULT onmouseup ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEUP), displaybind, bindable] HRESULT onmouseup ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEWHEEL), displaybind, bindable] HRESULT onmousewheel ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEWHEEL), displaybind, bindable] HRESULT onmousewheel ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONOFFLINE), displaybind, bindable] HRESULT onoffline ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONOFFLINE), displaybind, bindable] HRESULT onoffline ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONONLINE), displaybind, bindable] HRESULT ononline ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONONLINE), displaybind, bindable] HRESULT ononline ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONPROGRESS), displaybind, bindable] HRESULT onprogress ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONPROGRESS), displaybind, bindable] HRESULT onprogress ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONRATECHANGE), displaybind, bindable] HRESULT onratechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONRATECHANGE), displaybind, bindable] HRESULT onratechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONRESET), displaybind, bindable] HRESULT onreset ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONRESET), displaybind, bindable] HRESULT onreset ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONSEEKED), displaybind, bindable] HRESULT onseeked ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSEEKED), displaybind, bindable] HRESULT onseeked ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONSEEKING), displaybind, bindable] HRESULT onseeking ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSEEKING), displaybind, bindable] HRESULT onseeking ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONSELECT), displaybind, bindable] HRESULT onselect ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSELECT), displaybind, bindable] HRESULT onselect ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONSTALLED), displaybind, bindable] HRESULT onstalled ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSTALLED), displaybind, bindable] HRESULT onstalled ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONSTORAGE), displaybind, bindable] HRESULT onstorage ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSTORAGE), displaybind, bindable] HRESULT onstorage ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONSUBMIT), displaybind, bindable] HRESULT onsubmit ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSUBMIT), displaybind, bindable] HRESULT onsubmit ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONSUSPEND), displaybind, bindable] HRESULT onsuspend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSUSPEND), displaybind, bindable] HRESULT onsuspend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONTIMEUPDATE), displaybind, bindable] HRESULT ontimeupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONTIMEUPDATE), displaybind, bindable] HRESULT ontimeupdate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONPAUSE), displaybind, bindable] HRESULT onpause ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONPAUSE), displaybind, bindable] HRESULT onpause ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONPLAY), displaybind, bindable] HRESULT onplay ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONPLAY), displaybind, bindable] HRESULT onplay ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONPLAYING), displaybind, bindable] HRESULT onplaying ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONPLAYING), displaybind, bindable] HRESULT onplaying ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONVOLUMECHANGE), displaybind, bindable] HRESULT onvolumechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONVOLUMECHANGE), displaybind, bindable] HRESULT onvolumechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONWAITING), displaybind, bindable] HRESULT onwaiting ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONWAITING), displaybind, bindable] HRESULT onwaiting ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (305107ab-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLWindow8 : IDispatch {
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERDOWN), displaybind, bindable] HRESULT onmspointerdown ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERDOWN), displaybind, bindable] HRESULT onmspointerdown ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERMOVE), displaybind, bindable] HRESULT onmspointermove ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERMOVE), displaybind, bindable] HRESULT onmspointermove ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERUP), displaybind, bindable] HRESULT onmspointerup ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERUP), displaybind, bindable] HRESULT onmspointerup ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROVER), displaybind, bindable] HRESULT onmspointerover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROVER), displaybind, bindable] HRESULT onmspointerover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROUT), displaybind, bindable] HRESULT onmspointerout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROUT), displaybind, bindable] HRESULT onmspointerout ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERCANCEL), displaybind, bindable] HRESULT onmspointercancel ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERCANCEL), displaybind, bindable] HRESULT onmspointercancel ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERHOVER), displaybind, bindable] HRESULT onmspointerhover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERHOVER), displaybind, bindable] HRESULT onmspointerhover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURESTART), displaybind, bindable] HRESULT onmsgesturestart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURESTART), displaybind, bindable] HRESULT onmsgesturestart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURECHANGE), displaybind, bindable] HRESULT onmsgesturechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURECHANGE), displaybind, bindable] HRESULT onmsgesturechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREEND), displaybind, bindable] HRESULT onmsgestureend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREEND), displaybind, bindable] HRESULT onmsgestureend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREHOLD), displaybind, bindable] HRESULT onmsgesturehold ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREHOLD), displaybind, bindable] HRESULT onmsgesturehold ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURETAP), displaybind, bindable] HRESULT onmsgesturetap ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURETAP), displaybind, bindable] HRESULT onmsgesturetap ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREDOUBLETAP), displaybind, bindable] HRESULT onmsgesturedoubletap ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREDOUBLETAP), displaybind, bindable] HRESULT onmsgesturedoubletap ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSINERTIASTART), displaybind, bindable] HRESULT onmsinertiastart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSINERTIASTART), displaybind, bindable] HRESULT onmsinertiastart ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLWINDOW8_APPLICATIONCACHE)] HRESULT applicationCache ([retval, out] IHTMLApplicationCache **p);
    [propput, id (DISPID_IHTMLWINDOW8_ONPOPSTATE), displaybind, bindable] HRESULT onpopstate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONPOPSTATE), displaybind, bindable] HRESULT onpopstate ([retval, out] VARIANT *p);
  };
  [noncreatable, uuid (3050f7f6-98b5-11cf-bb82-00aa00bdce0b)] coclass FramesCollection {
    [default] interface IHTMLFramesCollection2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CFramesCollection;")
  [hidden, uuid (3050f591-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLScreen {
    properties:
    methods:
    [propget, id (DISPID_IHTMLSCREEN_COLORDEPTH)] long colorDepth ();
    [propput, id (DISPID_IHTMLSCREEN_BUFFERDEPTH)] void bufferDepth (long v);
    [propget, id (DISPID_IHTMLSCREEN_BUFFERDEPTH)] long bufferDepth ();
    [propget, id (DISPID_IHTMLSCREEN_WIDTH)] long width ();
    [propget, id (DISPID_IHTMLSCREEN_HEIGHT)] long height ();
    [propput, id (DISPID_IHTMLSCREEN_UPDATEINTERVAL)] void updateInterval (long v);
    [propget, id (DISPID_IHTMLSCREEN_UPDATEINTERVAL)] long updateInterval ();
    [propget, id (DISPID_IHTMLSCREEN_AVAILHEIGHT)] long availHeight ();
    [propget, id (DISPID_IHTMLSCREEN_AVAILWIDTH)] long availWidth ();
    [propget, id (DISPID_IHTMLSCREEN_FONTSMOOTHINGENABLED)] VARIANT_BOOL fontSmoothingEnabled ();
    [propget, id (DISPID_IHTMLSCREEN2_LOGICALXDPI)] long logicalXDPI ();
    [propget, id (DISPID_IHTMLSCREEN2_LOGICALYDPI)] long logicalYDPI ();
    [propget, id (DISPID_IHTMLSCREEN2_DEVICEXDPI)] long deviceXDPI ();
    [propget, id (DISPID_IHTMLSCREEN2_DEVICEYDPI)] long deviceYDPI ();
    [propget, id (DISPID_IHTMLSCREEN3_SYSTEMXDPI)] long systemXDPI ();
    [propget, id (DISPID_IHTMLSCREEN3_SYSTEMYDPI)] long systemYDPI ();
    [propget, id (DISPID_IHTMLSCREEN4_PIXELDEPTH)] long pixelDepth ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f35d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLScreen {
    [default] dispinterface DispHTMLScreen;
    interface IHTMLScreen;
    interface IHTMLScreen2;
    interface IHTMLScreen3;
    interface IHTMLScreen4;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CScreen;")
  [hidden, uuid (3050f55d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLWindow2 {
    properties:
    methods:
    [id (DISPID_IHTMLFRAMESCOLLECTION2_ITEM)] VARIANT item ([in] VARIANT *pvarIndex);
    [propget, id (DISPID_IHTMLFRAMESCOLLECTION2_LENGTH)] long length ();
    [propget, id (DISPID_IHTMLWINDOW2_FRAMES)] IHTMLFramesCollection2 *frames ();
    [propput, id (DISPID_IHTMLWINDOW2_DEFAULTSTATUS)] void defaultStatus (BSTR v);
    [propget, id (DISPID_IHTMLWINDOW2_DEFAULTSTATUS)] BSTR defaultStatus ();
    [propput, id (DISPID_IHTMLWINDOW2_STATUS)] void status (BSTR v);
    [propget, id (DISPID_IHTMLWINDOW2_STATUS)] BSTR status ();
    [id (DISPID_IHTMLWINDOW2_CLEARTIMEOUT)] void clearTimeout ([in] long timerID);
    [id (DISPID_IHTMLWINDOW2_ALERT)] void alert ([defaultvalue (L""), in] BSTR message);
    [id (DISPID_IHTMLWINDOW2_CONFIRM)] VARIANT_BOOL confirm ([defaultvalue (L""), in] BSTR message);
    [id (DISPID_IHTMLWINDOW2_PROMPT)] VARIANT prompt ([defaultvalue (L""), in] BSTR message,[defaultvalue (L"undefined"), in] BSTR defstr);
    [propget, id (DISPID_IHTMLWINDOW2_LOCATION)] IHTMLLocation *location ();
    [propget, id (DISPID_IHTMLWINDOW2_HISTORY)] IOmHistory *history ();
    [id (DISPID_IHTMLWINDOW2_CLOSE)] void close ();
    [propput, id (DISPID_IHTMLWINDOW2_OPENER)] void opener (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_OPENER)] VARIANT opener ();
    [propget, id (DISPID_IHTMLWINDOW2_NAVIGATOR)] IOmNavigator *navigator ();
    [propput, id (DISPID_IHTMLWINDOW2_NAME)] void name (BSTR v);
    [propget, id (DISPID_IHTMLWINDOW2_NAME)] BSTR name ();
    [propget, id (DISPID_IHTMLWINDOW2_PARENT)] IHTMLWindow2 *parent ();
    [id (DISPID_IHTMLWINDOW2_OPEN)] IHTMLWindow2 *open ([defaultvalue (L""), in] BSTR url,[defaultvalue (L""), in] BSTR name,[defaultvalue (L""), in] BSTR features,[defaultvalue (0), in] VARIANT_BOOL replace);
    [propget, id (DISPID_IHTMLWINDOW2_SELF)] IHTMLWindow2 *self ();
    [propget, id (DISPID_IHTMLWINDOW2_TOP)] IHTMLWindow2 *top ();
    [propget, id (DISPID_IHTMLWINDOW2_WINDOW)] IHTMLWindow2 *window ();
    [id (DISPID_IHTMLWINDOW2_NAVIGATE)] void navigate ([in] BSTR url);
    [propput, id (DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLWINDOW2_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable] void onbeforeunload (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable] VARIANT onbeforeunload ();
    [propput, id (DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable] void onunload (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable] VARIANT onunload ();
    [propput, id (DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [propput, id (DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propget, id (DISPID_IHTMLWINDOW2_DOCUMENT), source] IHTMLDocument2 *document ();
    [propget, id (DISPID_IHTMLWINDOW2_EVENT)] IHTMLEventObj *event ();
    [propget, id (DISPID_IHTMLWINDOW2__NEWENUM), hidden, restricted] IUnknown *_newEnum ();
    [id (DISPID_IHTMLWINDOW2_SHOWMODALDIALOG)] VARIANT showModalDialog ([in] BSTR dialog,[optional, in] VARIANT *varArgIn,[optional, in] VARIANT *varOptions);
    [id (DISPID_IHTMLWINDOW2_SHOWHELP)] void showHelp ([in] BSTR helpURL,[optional, in] VARIANT helpArg,[defaultvalue (L""), in] BSTR features);
    [propget, id (DISPID_IHTMLWINDOW2_SCREEN)] IHTMLScreen *screen ();
    [id (DISPID_IHTMLWINDOW2_FOCUS)] void focus ();
    [propget, id (DISPID_IHTMLWINDOW2_CLOSED)] VARIANT_BOOL closed ();
    [id (DISPID_IHTMLWINDOW2_BLUR)] void blur ();
    [id (DISPID_IHTMLWINDOW2_SCROLL)] void scroll ([in] long x,[in] long y);
    [propget, id (DISPID_IHTMLWINDOW2_CLIENTINFORMATION)] IOmNavigator *clientInformation ();
    [id (DISPID_IHTMLWINDOW2_CLEARINTERVAL)] void clearInterval ([in] long timerID);
    [propput, id (DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)] void offscreenBuffering (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)] VARIANT offscreenBuffering ();
    [id (DISPID_IHTMLWINDOW2_EXECSCRIPT)] VARIANT execScript ([in] BSTR code,[defaultvalue (L"JScript"), in] BSTR language);
    [id (DISPID_IHTMLWINDOW2_TOSTRING)] BSTR toString ();
    [id (DISPID_IHTMLWINDOW2_SCROLLBY)] void scrollBy ([in] long x,[in] long y);
    [id (DISPID_IHTMLWINDOW2_SCROLLTO)] void scrollTo ([in] long x,[in] long y);
    [id (DISPID_IHTMLWINDOW2_MOVETO)] void moveTo ([in] long x,[in] long y);
    [id (DISPID_IHTMLWINDOW2_MOVEBY)] void moveBy ([in] long x,[in] long y);
    [id (DISPID_IHTMLWINDOW2_RESIZETO)] void resizeTo ([in] long x,[in] long y);
    [id (DISPID_IHTMLWINDOW2_RESIZEBY)] void resizeBy ([in] long x,[in] long y);
    [propget, id (DISPID_IHTMLWINDOW2_EXTERNAL)] IDispatch *external ();
    [propget, id (DISPID_IHTMLWINDOW3_SCREENLEFT)] long screenLeft ();
    [propget, id (DISPID_IHTMLWINDOW3_SCREENTOP)] long screenTop ();
    [id (DISPID_IHTMLWINDOW3_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLWINDOW3_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLWINDOW3_SETTIMEOUT)] long setTimeout ([in] VARIANT *expression,[in] long msec,[optional, in] VARIANT *language);
    [id (DISPID_IHTMLWINDOW3_SETINTERVAL)] long setInterval ([in] VARIANT *expression,[in] long msec,[optional, in] VARIANT *language);
    [id (DISPID_IHTMLWINDOW3_PRINT)] void print ();
    [propput, id (DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable] void onbeforeprint (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable] VARIANT onbeforeprint ();
    [propput, id (DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable] void onafterprint (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable] VARIANT onafterprint ();
    [propget, id (DISPID_IHTMLWINDOW3_CLIPBOARDDATA)] IHTMLDataTransfer *clipboardData ();
    [id (DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG)] IHTMLWindow2 *showModelessDialog ([defaultvalue (L""), in] BSTR url,[defaultvalue (0), optional, in] VARIANT *varArgIn,[defaultvalue (0), optional, in] VARIANT *options);
    [id (DISPID_IHTMLWINDOW4_CREATEPOPUP)] IDispatch *createPopup ([optional, in] VARIANT *varArgIn);
    [propget, id (DISPID_IHTMLWINDOW4_FRAMEELEMENT)] IHTMLFrameBase *frameElement ();
    [propget, id (DISPID_IHTMLWINDOW6_SESSIONSTORAGE)] IHTMLStorage *sessionStorage ();
    [propget, id (DISPID_IHTMLWINDOW6_LOCALSTORAGE)] IHTMLStorage *localStorage ();
    [propput, id (DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable] void onhashchange (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable] VARIANT onhashchange ();
    [propget, id (DISPID_IHTMLWINDOW6_MAXCONNECTIONSPERSERVER)] long maxConnectionsPerServer ();
    [id (DISPID_IHTMLWINDOW6_POSTMESSAGE)] void postMessage ([in] BSTR msg,[optional, in] VARIANT targetOrigin);
    [id (DISPID_IHTMLWINDOW6_TOSTATICHTML)] BSTR toStaticHTML ([in] BSTR bstrHTML);
    [propput, id (DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable] void onmessage (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable] VARIANT onmessage ();
    [id (DISPID_IHTMLWINDOW6_MSWRITEPROFILERMARK)] void msWriteProfilerMark ([in] BSTR bstrProfilerMarkName);
    [id (DISPID_IHTMLWINDOW7_GETSELECTION)] IHTMLSelection *getSelection ();
    [id (DISPID_IHTMLWINDOW7_GETCOMPUTEDSTYLE)] IHTMLCSSStyleDeclaration *getComputedStyle ([in] IHTMLDOMNode *varArgIn,[defaultvalue (L""), in] BSTR bstrPseudoElt);
    [propget, id (DISPID_IHTMLWINDOW7_STYLEMEDIA)] IHTMLStyleMedia *styleMedia ();
    [propput, id (DISPID_IHTMLWINDOW7_PERFORMANCE)] void performance (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_PERFORMANCE)] VARIANT performance ();
    [propget, id (DISPID_IHTMLWINDOW7_INNERWIDTH)] long innerWidth ();
    [propget, id (DISPID_IHTMLWINDOW7_INNERHEIGHT)] long innerHeight ();
    [propget, id (DISPID_IHTMLWINDOW7_PAGEXOFFSET)] long pageXOffset ();
    [propget, id (DISPID_IHTMLWINDOW7_PAGEYOFFSET)] long pageYOffset ();
    [propget, id (DISPID_IHTMLWINDOW7_SCREENX)] long screenX ();
    [propget, id (DISPID_IHTMLWINDOW7_SCREENY)] long screenY ();
    [propget, id (DISPID_IHTMLWINDOW7_OUTERWIDTH)] long outerWidth ();
    [propget, id (DISPID_IHTMLWINDOW7_OUTERHEIGHT)] long outerHeight ();
    [propput, id (DISPID_IHTMLWINDOW7_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLWINDOW7_ONCANPLAY), displaybind, bindable] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCANPLAY), displaybind, bindable] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLWINDOW7_ONCANPLAYTHROUGH), displaybind, bindable] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCANPLAYTHROUGH), displaybind, bindable] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLWINDOW7_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLWINDOW7_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLWINDOW7_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDURATIONCHANGE), displaybind, bindable] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDURATIONCHANGE), displaybind, bindable] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLWINDOW7_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLWINDOW7_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propput, id (DISPID_IHTMLWINDOW7_ONINPUT), displaybind, bindable] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONINPUT), displaybind, bindable] VARIANT oninput ();
    [propput, id (DISPID_IHTMLWINDOW7_ONEMPTIED), displaybind, bindable] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONEMPTIED), displaybind, bindable] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLWINDOW7_ONENDED), displaybind, bindable] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONENDED), displaybind, bindable] VARIANT onended ();
    [propput, id (DISPID_IHTMLWINDOW7_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLWINDOW7_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLWINDOW7_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLWINDOW7_ONLOADEDDATA), displaybind, bindable] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONLOADEDDATA), displaybind, bindable] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLWINDOW7_ONLOADEDMETADATA), displaybind, bindable] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONLOADEDMETADATA), displaybind, bindable] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLWINDOW7_ONLOADSTART), displaybind, bindable] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONLOADSTART), displaybind, bindable] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [propput, id (DISPID_IHTMLWINDOW7_ONOFFLINE), displaybind, bindable] void onoffline (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONOFFLINE), displaybind, bindable] VARIANT onoffline ();
    [propput, id (DISPID_IHTMLWINDOW7_ONONLINE), displaybind, bindable] void ononline (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONONLINE), displaybind, bindable] VARIANT ononline ();
    [propput, id (DISPID_IHTMLWINDOW7_ONPROGRESS), displaybind, bindable] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONPROGRESS), displaybind, bindable] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLWINDOW7_ONRATECHANGE), displaybind, bindable] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONRATECHANGE), displaybind, bindable] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLWINDOW7_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLWINDOW7_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLWINDOW7_ONSEEKED), displaybind, bindable] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSEEKED), displaybind, bindable] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLWINDOW7_ONSEEKING), displaybind, bindable] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSEEKING), displaybind, bindable] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLWINDOW7_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLWINDOW7_ONSTALLED), displaybind, bindable] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSTALLED), displaybind, bindable] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLWINDOW7_ONSTORAGE), displaybind, bindable] void onstorage (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSTORAGE), displaybind, bindable] VARIANT onstorage ();
    [propput, id (DISPID_IHTMLWINDOW7_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLWINDOW7_ONSUSPEND), displaybind, bindable] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSUSPEND), displaybind, bindable] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLWINDOW7_ONTIMEUPDATE), displaybind, bindable] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONTIMEUPDATE), displaybind, bindable] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLWINDOW7_ONPAUSE), displaybind, bindable] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONPAUSE), displaybind, bindable] VARIANT onpause ();
    [propput, id (DISPID_IHTMLWINDOW7_ONPLAY), displaybind, bindable] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONPLAY), displaybind, bindable] VARIANT onplay ();
    [propput, id (DISPID_IHTMLWINDOW7_ONPLAYING), displaybind, bindable] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONPLAYING), displaybind, bindable] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLWINDOW7_ONVOLUMECHANGE), displaybind, bindable] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONVOLUMECHANGE), displaybind, bindable] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLWINDOW7_ONWAITING), displaybind, bindable] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONWAITING), displaybind, bindable] VARIANT onwaiting ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERDOWN), displaybind, bindable] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERDOWN), displaybind, bindable] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERMOVE), displaybind, bindable] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERMOVE), displaybind, bindable] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERUP), displaybind, bindable] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERUP), displaybind, bindable] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROVER), displaybind, bindable] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROVER), displaybind, bindable] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROUT), displaybind, bindable] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROUT), displaybind, bindable] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERCANCEL), displaybind, bindable] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERCANCEL), displaybind, bindable] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERHOVER), displaybind, bindable] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERHOVER), displaybind, bindable] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURESTART), displaybind, bindable] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURESTART), displaybind, bindable] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURECHANGE), displaybind, bindable] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURECHANGE), displaybind, bindable] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREEND), displaybind, bindable] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREEND), displaybind, bindable] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREHOLD), displaybind, bindable] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREHOLD), displaybind, bindable] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURETAP), displaybind, bindable] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURETAP), displaybind, bindable] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREDOUBLETAP), displaybind, bindable] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREDOUBLETAP), displaybind, bindable] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSINERTIASTART), displaybind, bindable] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSINERTIASTART), displaybind, bindable] VARIANT onmsinertiastart ();
    [propget, id (DISPID_IHTMLWINDOW8_APPLICATIONCACHE)] IHTMLApplicationCache *applicationCache ();
    [propput, id (DISPID_IHTMLWINDOW8_ONPOPSTATE), displaybind, bindable] void onpopstate (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONPOPSTATE), displaybind, bindable] VARIANT onpopstate ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [id (DISPID_IEVENTTARGET_ADDEVENTLISTENER)] void addEventListener ([in] BSTR type,[in] IDispatch *listener,[in] VARIANT_BOOL useCapture);
    [id (DISPID_IEVENTTARGET_REMOVEEVENTLISTENER)] void removeEventListener ([in] BSTR type,[in] IDispatch *listener,[in] VARIANT_BOOL useCapture);
    [id (DISPID_IEVENTTARGET_DISPATCHEVENT)] VARIANT_BOOL dispatchEvent ([in] IDOMEvent *evt);
  };
  [noncreatable, uuid (D48A6EC6-6a4a-11cf-94a7-444553540000)] coclass HTMLWindow2 {
    [default] dispinterface DispHTMLWindow2;
    [source, default] dispinterface HTMLWindowEvents;
    [source] dispinterface HTMLWindowEvents2;
    [source] dispinterface HTMLWindowEvents3;
    interface IHTMLWindow2;
    interface IHTMLWindow3;
    interface IHTMLWindow4;
    interface IHTMLWindow5;
    interface IHTMLWindow6;
    interface IHTMLWindow7;
    interface IHTMLWindow8;
    interface IHTMLDOMConstructor;
    interface IEventTarget;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CWindow;")
  [hidden, uuid (3050f55e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLWindowProxy {
    properties:
    methods:
    [id (DISPID_IHTMLFRAMESCOLLECTION2_ITEM)] VARIANT item ([in] VARIANT *pvarIndex);
    [propget, id (DISPID_IHTMLFRAMESCOLLECTION2_LENGTH)] long length ();
    [propget, id (DISPID_IHTMLWINDOW2_FRAMES)] IHTMLFramesCollection2 *frames ();
    [propput, id (DISPID_IHTMLWINDOW2_DEFAULTSTATUS)] void defaultStatus (BSTR v);
    [propget, id (DISPID_IHTMLWINDOW2_DEFAULTSTATUS)] BSTR defaultStatus ();
    [propput, id (DISPID_IHTMLWINDOW2_STATUS)] void status (BSTR v);
    [propget, id (DISPID_IHTMLWINDOW2_STATUS)] BSTR status ();
    [id (DISPID_IHTMLWINDOW2_CLEARTIMEOUT)] void clearTimeout ([in] long timerID);
    [id (DISPID_IHTMLWINDOW2_ALERT)] void alert ([defaultvalue (L""), in] BSTR message);
    [id (DISPID_IHTMLWINDOW2_CONFIRM)] VARIANT_BOOL confirm ([defaultvalue (L""), in] BSTR message);
    [id (DISPID_IHTMLWINDOW2_PROMPT)] VARIANT prompt ([defaultvalue (L""), in] BSTR message,[defaultvalue (L"undefined"), in] BSTR defstr);
    [propget, id (DISPID_IHTMLWINDOW2_LOCATION)] IHTMLLocation *location ();
    [propget, id (DISPID_IHTMLWINDOW2_HISTORY)] IOmHistory *history ();
    [id (DISPID_IHTMLWINDOW2_CLOSE)] void close ();
    [propput, id (DISPID_IHTMLWINDOW2_OPENER)] void opener (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_OPENER)] VARIANT opener ();
    [propget, id (DISPID_IHTMLWINDOW2_NAVIGATOR)] IOmNavigator *navigator ();
    [propput, id (DISPID_IHTMLWINDOW2_NAME)] void name (BSTR v);
    [propget, id (DISPID_IHTMLWINDOW2_NAME)] BSTR name ();
    [propget, id (DISPID_IHTMLWINDOW2_PARENT)] IHTMLWindow2 *parent ();
    [id (DISPID_IHTMLWINDOW2_OPEN)] IHTMLWindow2 *open ([defaultvalue (L""), in] BSTR url,[defaultvalue (L""), in] BSTR name,[defaultvalue (L""), in] BSTR features,[defaultvalue (0), in] VARIANT_BOOL replace);
    [propget, id (DISPID_IHTMLWINDOW2_SELF)] IHTMLWindow2 *self ();
    [propget, id (DISPID_IHTMLWINDOW2_TOP)] IHTMLWindow2 *top ();
    [propget, id (DISPID_IHTMLWINDOW2_WINDOW)] IHTMLWindow2 *window ();
    [id (DISPID_IHTMLWINDOW2_NAVIGATE)] void navigate ([in] BSTR url);
    [propput, id (DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLWINDOW2_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable] void onbeforeunload (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable] VARIANT onbeforeunload ();
    [propput, id (DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable] void onunload (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable] VARIANT onunload ();
    [propput, id (DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [propput, id (DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propget, id (DISPID_IHTMLWINDOW2_DOCUMENT), source] IHTMLDocument2 *document ();
    [propget, id (DISPID_IHTMLWINDOW2_EVENT)] IHTMLEventObj *event ();
    [propget, id (DISPID_IHTMLWINDOW2__NEWENUM), hidden, restricted] IUnknown *_newEnum ();
    [id (DISPID_IHTMLWINDOW2_SHOWMODALDIALOG)] VARIANT showModalDialog ([in] BSTR dialog,[optional, in] VARIANT *varArgIn,[optional, in] VARIANT *varOptions);
    [id (DISPID_IHTMLWINDOW2_SHOWHELP)] void showHelp ([in] BSTR helpURL,[optional, in] VARIANT helpArg,[defaultvalue (L""), in] BSTR features);
    [propget, id (DISPID_IHTMLWINDOW2_SCREEN)] IHTMLScreen *screen ();
    [id (DISPID_IHTMLWINDOW2_FOCUS)] void focus ();
    [propget, id (DISPID_IHTMLWINDOW2_CLOSED)] VARIANT_BOOL closed ();
    [id (DISPID_IHTMLWINDOW2_BLUR)] void blur ();
    [id (DISPID_IHTMLWINDOW2_SCROLL)] void scroll ([in] long x,[in] long y);
    [propget, id (DISPID_IHTMLWINDOW2_CLIENTINFORMATION)] IOmNavigator *clientInformation ();
    [id (DISPID_IHTMLWINDOW2_CLEARINTERVAL)] void clearInterval ([in] long timerID);
    [propput, id (DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)] void offscreenBuffering (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)] VARIANT offscreenBuffering ();
    [id (DISPID_IHTMLWINDOW2_EXECSCRIPT)] VARIANT execScript ([in] BSTR code,[defaultvalue (L"JScript"), in] BSTR language);
    [id (DISPID_IHTMLWINDOW2_TOSTRING)] BSTR toString ();
    [id (DISPID_IHTMLWINDOW2_SCROLLBY)] void scrollBy ([in] long x,[in] long y);
    [id (DISPID_IHTMLWINDOW2_SCROLLTO)] void scrollTo ([in] long x,[in] long y);
    [id (DISPID_IHTMLWINDOW2_MOVETO)] void moveTo ([in] long x,[in] long y);
    [id (DISPID_IHTMLWINDOW2_MOVEBY)] void moveBy ([in] long x,[in] long y);
    [id (DISPID_IHTMLWINDOW2_RESIZETO)] void resizeTo ([in] long x,[in] long y);
    [id (DISPID_IHTMLWINDOW2_RESIZEBY)] void resizeBy ([in] long x,[in] long y);
    [propget, id (DISPID_IHTMLWINDOW2_EXTERNAL)] IDispatch *external ();
    [propget, id (DISPID_IHTMLWINDOW3_SCREENLEFT)] long screenLeft ();
    [propget, id (DISPID_IHTMLWINDOW3_SCREENTOP)] long screenTop ();
    [id (DISPID_IHTMLWINDOW3_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLWINDOW3_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLWINDOW3_SETTIMEOUT)] long setTimeout ([in] VARIANT *expression,[in] long msec,[optional, in] VARIANT *language);
    [id (DISPID_IHTMLWINDOW3_SETINTERVAL)] long setInterval ([in] VARIANT *expression,[in] long msec,[optional, in] VARIANT *language);
    [id (DISPID_IHTMLWINDOW3_PRINT)] void print ();
    [propput, id (DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable] void onbeforeprint (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable] VARIANT onbeforeprint ();
    [propput, id (DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable] void onafterprint (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable] VARIANT onafterprint ();
    [propget, id (DISPID_IHTMLWINDOW3_CLIPBOARDDATA)] IHTMLDataTransfer *clipboardData ();
    [id (DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG)] IHTMLWindow2 *showModelessDialog ([defaultvalue (L""), in] BSTR url,[defaultvalue (0), optional, in] VARIANT *varArgIn,[defaultvalue (0), optional, in] VARIANT *options);
    [id (DISPID_IHTMLWINDOW4_CREATEPOPUP)] IDispatch *createPopup ([optional, in] VARIANT *varArgIn);
    [propget, id (DISPID_IHTMLWINDOW4_FRAMEELEMENT)] IHTMLFrameBase *frameElement ();
    [propget, id (DISPID_IHTMLWINDOW6_SESSIONSTORAGE)] IHTMLStorage *sessionStorage ();
    [propget, id (DISPID_IHTMLWINDOW6_LOCALSTORAGE)] IHTMLStorage *localStorage ();
    [propput, id (DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable] void onhashchange (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable] VARIANT onhashchange ();
    [propget, id (DISPID_IHTMLWINDOW6_MAXCONNECTIONSPERSERVER)] long maxConnectionsPerServer ();
    [id (DISPID_IHTMLWINDOW6_POSTMESSAGE)] void postMessage ([in] BSTR msg,[optional, in] VARIANT targetOrigin);
    [id (DISPID_IHTMLWINDOW6_TOSTATICHTML)] BSTR toStaticHTML ([in] BSTR bstrHTML);
    [propput, id (DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable] void onmessage (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable] VARIANT onmessage ();
    [id (DISPID_IHTMLWINDOW6_MSWRITEPROFILERMARK)] void msWriteProfilerMark ([in] BSTR bstrProfilerMarkName);
    [id (DISPID_IHTMLWINDOW7_GETSELECTION)] IHTMLSelection *getSelection ();
    [id (DISPID_IHTMLWINDOW7_GETCOMPUTEDSTYLE)] IHTMLCSSStyleDeclaration *getComputedStyle ([in] IHTMLDOMNode *varArgIn,[defaultvalue (L""), in] BSTR bstrPseudoElt);
    [propget, id (DISPID_IHTMLWINDOW7_STYLEMEDIA)] IHTMLStyleMedia *styleMedia ();
    [propput, id (DISPID_IHTMLWINDOW7_PERFORMANCE)] void performance (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_PERFORMANCE)] VARIANT performance ();
    [propget, id (DISPID_IHTMLWINDOW7_INNERWIDTH)] long innerWidth ();
    [propget, id (DISPID_IHTMLWINDOW7_INNERHEIGHT)] long innerHeight ();
    [propget, id (DISPID_IHTMLWINDOW7_PAGEXOFFSET)] long pageXOffset ();
    [propget, id (DISPID_IHTMLWINDOW7_PAGEYOFFSET)] long pageYOffset ();
    [propget, id (DISPID_IHTMLWINDOW7_SCREENX)] long screenX ();
    [propget, id (DISPID_IHTMLWINDOW7_SCREENY)] long screenY ();
    [propget, id (DISPID_IHTMLWINDOW7_OUTERWIDTH)] long outerWidth ();
    [propget, id (DISPID_IHTMLWINDOW7_OUTERHEIGHT)] long outerHeight ();
    [propput, id (DISPID_IHTMLWINDOW7_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLWINDOW7_ONCANPLAY), displaybind, bindable] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCANPLAY), displaybind, bindable] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLWINDOW7_ONCANPLAYTHROUGH), displaybind, bindable] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCANPLAYTHROUGH), displaybind, bindable] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLWINDOW7_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLWINDOW7_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLWINDOW7_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLWINDOW7_ONDURATIONCHANGE), displaybind, bindable] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDURATIONCHANGE), displaybind, bindable] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLWINDOW7_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLWINDOW7_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propput, id (DISPID_IHTMLWINDOW7_ONINPUT), displaybind, bindable] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONINPUT), displaybind, bindable] VARIANT oninput ();
    [propput, id (DISPID_IHTMLWINDOW7_ONEMPTIED), displaybind, bindable] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONEMPTIED), displaybind, bindable] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLWINDOW7_ONENDED), displaybind, bindable] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONENDED), displaybind, bindable] VARIANT onended ();
    [propput, id (DISPID_IHTMLWINDOW7_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLWINDOW7_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLWINDOW7_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLWINDOW7_ONLOADEDDATA), displaybind, bindable] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONLOADEDDATA), displaybind, bindable] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLWINDOW7_ONLOADEDMETADATA), displaybind, bindable] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONLOADEDMETADATA), displaybind, bindable] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLWINDOW7_ONLOADSTART), displaybind, bindable] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONLOADSTART), displaybind, bindable] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [propput, id (DISPID_IHTMLWINDOW7_ONOFFLINE), displaybind, bindable] void onoffline (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONOFFLINE), displaybind, bindable] VARIANT onoffline ();
    [propput, id (DISPID_IHTMLWINDOW7_ONONLINE), displaybind, bindable] void ononline (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONONLINE), displaybind, bindable] VARIANT ononline ();
    [propput, id (DISPID_IHTMLWINDOW7_ONPROGRESS), displaybind, bindable] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONPROGRESS), displaybind, bindable] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLWINDOW7_ONRATECHANGE), displaybind, bindable] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONRATECHANGE), displaybind, bindable] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLWINDOW7_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLWINDOW7_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLWINDOW7_ONSEEKED), displaybind, bindable] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSEEKED), displaybind, bindable] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLWINDOW7_ONSEEKING), displaybind, bindable] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSEEKING), displaybind, bindable] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLWINDOW7_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLWINDOW7_ONSTALLED), displaybind, bindable] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSTALLED), displaybind, bindable] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLWINDOW7_ONSTORAGE), displaybind, bindable] void onstorage (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSTORAGE), displaybind, bindable] VARIANT onstorage ();
    [propput, id (DISPID_IHTMLWINDOW7_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLWINDOW7_ONSUSPEND), displaybind, bindable] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSUSPEND), displaybind, bindable] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLWINDOW7_ONTIMEUPDATE), displaybind, bindable] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONTIMEUPDATE), displaybind, bindable] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLWINDOW7_ONPAUSE), displaybind, bindable] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONPAUSE), displaybind, bindable] VARIANT onpause ();
    [propput, id (DISPID_IHTMLWINDOW7_ONPLAY), displaybind, bindable] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONPLAY), displaybind, bindable] VARIANT onplay ();
    [propput, id (DISPID_IHTMLWINDOW7_ONPLAYING), displaybind, bindable] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONPLAYING), displaybind, bindable] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLWINDOW7_ONVOLUMECHANGE), displaybind, bindable] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONVOLUMECHANGE), displaybind, bindable] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLWINDOW7_ONWAITING), displaybind, bindable] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONWAITING), displaybind, bindable] VARIANT onwaiting ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERDOWN), displaybind, bindable] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERDOWN), displaybind, bindable] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERMOVE), displaybind, bindable] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERMOVE), displaybind, bindable] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERUP), displaybind, bindable] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERUP), displaybind, bindable] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROVER), displaybind, bindable] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROVER), displaybind, bindable] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROUT), displaybind, bindable] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROUT), displaybind, bindable] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERCANCEL), displaybind, bindable] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERCANCEL), displaybind, bindable] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERHOVER), displaybind, bindable] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERHOVER), displaybind, bindable] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURESTART), displaybind, bindable] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURESTART), displaybind, bindable] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURECHANGE), displaybind, bindable] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURECHANGE), displaybind, bindable] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREEND), displaybind, bindable] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREEND), displaybind, bindable] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREHOLD), displaybind, bindable] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREHOLD), displaybind, bindable] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURETAP), displaybind, bindable] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURETAP), displaybind, bindable] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREDOUBLETAP), displaybind, bindable] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREDOUBLETAP), displaybind, bindable] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSINERTIASTART), displaybind, bindable] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSINERTIASTART), displaybind, bindable] VARIANT onmsinertiastart ();
    [propget, id (DISPID_IHTMLWINDOW8_APPLICATIONCACHE)] IHTMLApplicationCache *applicationCache ();
    [propput, id (DISPID_IHTMLWINDOW8_ONPOPSTATE), displaybind, bindable] void onpopstate (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONPOPSTATE), displaybind, bindable] VARIANT onpopstate ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [id (DISPID_IEVENTTARGET_ADDEVENTLISTENER)] void addEventListener ([in] BSTR type,[in] IDispatch *listener,[in] VARIANT_BOOL useCapture);
    [id (DISPID_IEVENTTARGET_REMOVEEVENTLISTENER)] void removeEventListener ([in] BSTR type,[in] IDispatch *listener,[in] VARIANT_BOOL useCapture);
    [id (DISPID_IEVENTTARGET_DISPATCHEVENT)] VARIANT_BOOL dispatchEvent ([in] IDOMEvent *evt);
  };
  [uuid (3050f391-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLWindowProxy {
    [default] dispinterface DispHTMLWindowProxy;
    [source, default] dispinterface HTMLWindowEvents;
    [source] dispinterface HTMLWindowEvents2;
    [source] dispinterface HTMLWindowEvents3;
    interface IHTMLWindow2;
    interface IHTMLWindow3;
    interface IHTMLWindow4;
    interface IHTMLWindow5;
    interface IHTMLWindow6;
    interface IHTMLWindow7;
    interface IHTMLWindow8;
    interface IHTMLDOMConstructor;
    interface IEventTarget;
  };
  cpp_quote("EXTERN_C const GUID CLSID_COmWindowProxy;")
  [odl, oleautomation, dual, uuid (3051041a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDocumentCompatibleInfo : IDispatch {
    [propget, id (DISPID_IHTMLDOCUMENTCOMPATIBLEINFO_USERAGENT)] HRESULT userAgent ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOCUMENTCOMPATIBLEINFO_VERSION)] HRESULT version ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510418-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDocumentCompatibleInfoCollection : IDispatch {
    [propget, id (DISPID_IHTMLDOCUMENTCOMPATIBLEINFOCOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLDOCUMENTCOMPATIBLEINFOCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] IHTMLDocumentCompatibleInfo **compatibleInfo);
  };
  [hidden, uuid (3050f53e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDocumentCompatibleInfo {
    properties:
    methods:
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3051041b-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDocumentCompatibleInfo {
    [default] dispinterface DispHTMLDocumentCompatibleInfo;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDocumentVersion;")
  [hidden, uuid (3050f53f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDocumentCompatibleInfoCollection {
    properties:
    methods:
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (30510419-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDocumentCompatibleInfoCollection {
    [default] dispinterface DispHTMLDocumentCompatibleInfoCollection;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDocumentVersionCollection;")
  [hidden, uuid (30510737-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLDocumentEvents4 {
    properties:
    methods:
    [id (DISPID_HTMLDOCUMENTEVENTS4_ONMSTHUMBNAILCLICK)] void onmsthumbnailclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS4_ONMSSITEMODEJUMPLISTITEMREMOVED)] void onmssitemodejumplistitemremoved ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f5a0-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLDocumentEvents3 {
    properties:
    methods:
    [id (DISPID_HTMLDOCUMENTEVENTS3_ONSTORAGE)] void onstorage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS3_ONSTORAGECOMMIT)] void onstoragecommit ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f613-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLDocumentEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONSTOP)] VARIANT_BOOL onstop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONSELECTIONCHANGE)] void onselectionchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f260-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLDocumentEvents {
    properties:
    methods:
    [id (DISPID_HTMLDOCUMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONSTOP)] VARIANT_BOOL onstop ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONSELECTIONCHANGE)] void onselectionchange ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLDOCUMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
  };
  typedef enum _htmlCompatMode {
    htmlCompatModeBackCompat = 0,
    htmlCompatModeCSS1Compat = 1,
    htmlCompatMode_Max = 0x7FFFFFFF
  } htmlCompatMode;
  interface ISVGSVGElement;
  interface IDOMNodeIterator;
  interface IDOMTreeWalker;
  interface IDOMProcessingInstruction;
  [odl, oleautomation, dual, uuid (626fc520-A41E-11cf-A731-00a0c9082637)] interface IHTMLDocument : IDispatch {
    [propget, id (DISPID_IHTMLDOCUMENT_SCRIPT), hidden, nonbrowsable] HRESULT Script ([retval, out] IDispatch **p);
  };
  [odl, oleautomation, dual, uuid (332c4425-26cb-11d0-b483-00c04fd90119)] interface IHTMLDocument2 : IHTMLDocument {
    [propget, id (DISPID_IHTMLDOCUMENT2_ALL)] HRESULT all ([retval, out] IHTMLElementCollection **p);
    [propget, id (DISPID_IHTMLDOCUMENT2_BODY)] HRESULT body ([retval, out] IHTMLElement **p);
    [propget, id (DISPID_IHTMLDOCUMENT2_ACTIVEELEMENT)] HRESULT activeElement ([retval, out] IHTMLElement **p);
    [propget, id (DISPID_IHTMLDOCUMENT2_IMAGES)] HRESULT images ([retval, out] IHTMLElementCollection **p);
    [propget, id (DISPID_IHTMLDOCUMENT2_APPLETS)] HRESULT applets ([retval, out] IHTMLElementCollection **p);
    [propget, id (DISPID_IHTMLDOCUMENT2_LINKS)] HRESULT links ([retval, out] IHTMLElementCollection **p);
    [propget, id (DISPID_IHTMLDOCUMENT2_FORMS)] HRESULT forms ([retval, out] IHTMLElementCollection **p);
    [propget, id (DISPID_IHTMLDOCUMENT2_ANCHORS)] HRESULT anchors ([retval, out] IHTMLElementCollection **p);
    [propput, id (DISPID_IHTMLDOCUMENT2_TITLE)] HRESULT title ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT2_TITLE)] HRESULT title ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOCUMENT2_SCRIPTS)] HRESULT scripts ([retval, out] IHTMLElementCollection **p);
    [propput, id (DISPID_IHTMLDOCUMENT2_DESIGNMODE), hidden] HRESULT designMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT2_DESIGNMODE), hidden] HRESULT designMode ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOCUMENT2_SELECTION)] HRESULT selection ([retval, out] IHTMLSelectionObject **p);
    [propget, id (DISPID_IHTMLDOCUMENT2_READYSTATE), bindable] HRESULT readyState ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOCUMENT2_FRAMES)] HRESULT frames ([retval, out] IHTMLFramesCollection2 **p);
    [propget, id (DISPID_IHTMLDOCUMENT2_EMBEDS)] HRESULT embeds ([retval, out] IHTMLElementCollection **p);
    [propget, id (DISPID_IHTMLDOCUMENT2_PLUGINS)] HRESULT plugins ([retval, out] IHTMLElementCollection **p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ALINKCOLOR)] HRESULT alinkColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ALINKCOLOR)] HRESULT alinkColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_BGCOLOR)] HRESULT bgColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_BGCOLOR)] HRESULT bgColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_FGCOLOR)] HRESULT fgColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_FGCOLOR)] HRESULT fgColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_LINKCOLOR)] HRESULT linkColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_LINKCOLOR)] HRESULT linkColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_VLINKCOLOR)] HRESULT vlinkColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_VLINKCOLOR)] HRESULT vlinkColor ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLDOCUMENT2_REFERRER)] HRESULT referrer ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOCUMENT2_LOCATION)] HRESULT location ([retval, out] IHTMLLocation **p);
    [propget, id (DISPID_IHTMLDOCUMENT2_LASTMODIFIED)] HRESULT lastModified ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_URL)] HRESULT URL ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT2_URL)] HRESULT URL ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_DOMAIN)] HRESULT domain ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT2_DOMAIN)] HRESULT domain ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_COOKIE)] HRESULT cookie ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT2_COOKIE)] HRESULT cookie ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_EXPANDO), bindable, hidden] HRESULT expando ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDOCUMENT2_EXPANDO), bindable, hidden] HRESULT expando ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_CHARSET), hidden] HRESULT charset ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT2_CHARSET), hidden] HRESULT charset ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)] HRESULT defaultCharset ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)] HRESULT defaultCharset ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOCUMENT2_MIMETYPE)] HRESULT mimeType ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOCUMENT2_FILESIZE)] HRESULT fileSize ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOCUMENT2_FILECREATEDDATE)] HRESULT fileCreatedDate ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOCUMENT2_FILEMODIFIEDDATE)] HRESULT fileModifiedDate ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOCUMENT2_FILEUPDATEDDATE)] HRESULT fileUpdatedDate ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOCUMENT2_SECURITY)] HRESULT security ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOCUMENT2_PROTOCOL)] HRESULT protocol ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOCUMENT2_NAMEPROP)] HRESULT nameProp ([retval, out] BSTR *p);
    [vararg, id (DISPID_IHTMLDOCUMENT2_WRITE)] HRESULT write ([in] SAFEARRAY (VARIANT) psarray);
    [vararg, id (DISPID_IHTMLDOCUMENT2_WRITELN)] HRESULT writeln ([in] SAFEARRAY (VARIANT) psarray);
    [id (DISPID_IHTMLDOCUMENT2_OPEN)] HRESULT open ([/*defaultvalue (L"text/html"),*/ in] BSTR url,[optional, in] VARIANT name,[optional, in] VARIANT features,[optional, in] VARIANT replace,[retval, out] IDispatch **pomWindowResult);
    [id (DISPID_IHTMLDOCUMENT2_CLOSE)] HRESULT close ();
    [id (DISPID_IHTMLDOCUMENT2_CLEAR)] HRESULT clear ();
    [id (DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSUPPORTED)] HRESULT queryCommandSupported ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLDOCUMENT2_QUERYCOMMANDENABLED)] HRESULT queryCommandEnabled ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSTATE)] HRESULT queryCommandState ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLDOCUMENT2_QUERYCOMMANDINDETERM)] HRESULT queryCommandIndeterm ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLDOCUMENT2_QUERYCOMMANDTEXT)] HRESULT queryCommandText ([in] BSTR cmdID,[retval, out] BSTR *pcmdText);
    [id (DISPID_IHTMLDOCUMENT2_QUERYCOMMANDVALUE)] HRESULT queryCommandValue ([in] BSTR cmdID,[retval, out] VARIANT *pcmdValue);
    [id (DISPID_IHTMLDOCUMENT2_EXECCOMMAND)] HRESULT execCommand ([in] BSTR cmdID,[in] VARIANT_BOOL showUI,[optional, in] VARIANT value,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLDOCUMENT2_EXECCOMMANDSHOWHELP)] HRESULT execCommandShowHelp ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLDOCUMENT2_CREATEELEMENT)] HRESULT createElement ([in] BSTR eTag,[retval, out] IHTMLElement **newElem);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONHELP), displaybind, bindable] HRESULT onhelp ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONHELP), displaybind, bindable] HRESULT onhelp ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONCLICK), displaybind, bindable] HRESULT onclick ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONCLICK), displaybind, bindable] HRESULT onclick ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONDBLCLICK), displaybind, bindable] HRESULT ondblclick ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONDBLCLICK), displaybind, bindable] HRESULT ondblclick ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONKEYUP), displaybind, bindable] HRESULT onkeyup ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONKEYUP), displaybind, bindable] HRESULT onkeyup ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONKEYDOWN), displaybind, bindable] HRESULT onkeydown ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONKEYDOWN), displaybind, bindable] HRESULT onkeydown ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONKEYPRESS), displaybind, bindable] HRESULT onkeypress ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONKEYPRESS), displaybind, bindable] HRESULT onkeypress ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONMOUSEUP), displaybind, bindable] HRESULT onmouseup ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONMOUSEUP), displaybind, bindable] HRESULT onmouseup ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN), displaybind, bindable] HRESULT onmousedown ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN), displaybind, bindable] HRESULT onmousedown ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE), displaybind, bindable] HRESULT onmousemove ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE), displaybind, bindable] HRESULT onmousemove ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONMOUSEOUT), displaybind, bindable] HRESULT onmouseout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONMOUSEOUT), displaybind, bindable] HRESULT onmouseout ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONMOUSEOVER), displaybind, bindable] HRESULT onmouseover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONMOUSEOVER), displaybind, bindable] HRESULT onmouseover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE), displaybind, bindable] HRESULT onafterupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE), displaybind, bindable] HRESULT onafterupdate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONROWEXIT), displaybind, bindable] HRESULT onrowexit ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONROWEXIT), displaybind, bindable] HRESULT onrowexit ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONROWENTER), displaybind, bindable] HRESULT onrowenter ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONROWENTER), displaybind, bindable] HRESULT onrowenter ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONDRAGSTART), displaybind, bindable] HRESULT ondragstart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONDRAGSTART), displaybind, bindable] HRESULT ondragstart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONSELECTSTART), displaybind, bindable] HRESULT onselectstart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONSELECTSTART), displaybind, bindable] HRESULT onselectstart ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDOCUMENT2_ELEMENTFROMPOINT)] HRESULT elementFromPoint ([in] long x,[in] long y,[retval, out] IHTMLElement **elementHit);
    [propget, id (DISPID_IHTMLDOCUMENT2_PARENTWINDOW)] HRESULT parentWindow ([retval, out] IHTMLWindow2 **p);
    [propget, id (DISPID_IHTMLDOCUMENT2_STYLESHEETS)] HRESULT styleSheets ([retval, out] IHTMLStyleSheetsCollection **p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE), displaybind, bindable] HRESULT onbeforeupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE), displaybind, bindable] HRESULT onbeforeupdate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONERRORUPDATE), displaybind, bindable] HRESULT onerrorupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONERRORUPDATE), displaybind, bindable] HRESULT onerrorupdate ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDOCUMENT2_TOSTRING)] HRESULT toString ([retval, out] BSTR *String);
    [id (DISPID_IHTMLDOCUMENT2_CREATESTYLESHEET)] HRESULT createStyleSheet ([defaultvalue (L""), in] BSTR bstrHref,[defaultvalue (-1), in] long lIndex,[defaultvalue (0), retval, out] IHTMLStyleSheet **ppnewStyleSheet);
  };
  [odl, oleautomation, dual, uuid (3050f485-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDocument3 : IDispatch {
    [id (DISPID_IHTMLDOCUMENT3_RELEASECAPTURE)] HRESULT releaseCapture ();
    [id (DISPID_IHTMLDOCUMENT3_RECALC)] HRESULT recalc ([defaultvalue (0), in] VARIANT_BOOL fForce);
    [id (DISPID_IHTMLDOCUMENT3_CREATETEXTNODE)] HRESULT createTextNode ([in] BSTR text,[retval, out] IHTMLDOMNode **newTextNode);
    [propget, id (DISPID_IHTMLDOCUMENT3_DOCUMENTELEMENT)] HRESULT documentElement ([retval, out] IHTMLElement **p);
    [propget, id (DISPID_IHTMLDOCUMENT3_UNIQUEID), hidden] HRESULT uniqueID ([retval, out] BSTR *p);
    [id (DISPID_IHTMLDOCUMENT3_ATTACHEVENT)] HRESULT attachEvent ([in] BSTR event,[in] IDispatch *pDisp,[retval, out] VARIANT_BOOL *pfResult);
    [id (DISPID_IHTMLDOCUMENT3_DETACHEVENT)] HRESULT detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propput, id (DISPID_IHTMLDOCUMENT3_ONROWSDELETE), displaybind, bindable] HRESULT onrowsdelete ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONROWSDELETE), displaybind, bindable] HRESULT onrowsdelete ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT3_ONROWSINSERTED), displaybind, bindable] HRESULT onrowsinserted ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONROWSINSERTED), displaybind, bindable] HRESULT onrowsinserted ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT3_ONCELLCHANGE), displaybind, bindable] HRESULT oncellchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONCELLCHANGE), displaybind, bindable] HRESULT oncellchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED), displaybind, bindable] HRESULT ondatasetchanged ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED), displaybind, bindable] HRESULT ondatasetchanged ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE), displaybind, bindable] HRESULT ondataavailable ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE), displaybind, bindable] HRESULT ondataavailable ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE), displaybind, bindable] HRESULT ondatasetcomplete ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE), displaybind, bindable] HRESULT ondatasetcomplete ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE), displaybind, bindable] HRESULT onpropertychange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE), displaybind, bindable] HRESULT onpropertychange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT3_DIR)] HRESULT dir ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT3_DIR)] HRESULT dir ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU), displaybind, bindable] HRESULT oncontextmenu ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU), displaybind, bindable] HRESULT oncontextmenu ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT3_ONSTOP), displaybind, bindable] HRESULT onstop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONSTOP), displaybind, bindable] HRESULT onstop ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDOCUMENT3_CREATEDOCUMENTFRAGMENT)] HRESULT createDocumentFragment ([retval, out] IHTMLDocument2 **pNewDoc);
    [propget, id (DISPID_IHTMLDOCUMENT3_PARENTDOCUMENT), hidden, restricted] HRESULT parentDocument ([retval, out] IHTMLDocument2 **p);
    [propput, id (DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD), hidden, restricted] HRESULT enableDownload ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD), hidden, restricted] HRESULT enableDownload ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLDOCUMENT3_BASEURL), hidden, restricted] HRESULT baseUrl ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT3_BASEURL), hidden, restricted] HRESULT baseUrl ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOCUMENT3_CHILDNODES)] HRESULT childNodes ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS), hidden, restricted] HRESULT inheritStyleSheets ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS), hidden, restricted] HRESULT inheritStyleSheets ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS), displaybind, bindable] HRESULT onbeforeeditfocus ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS), displaybind, bindable] HRESULT onbeforeeditfocus ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDOCUMENT3_GETELEMENTSBYNAME)] HRESULT getElementsByName ([in] BSTR v,[retval, out] IHTMLElementCollection **pelColl);
    [id (DISPID_IHTMLDOCUMENT3_GETELEMENTBYID)] HRESULT getElementById ([in] BSTR v,[retval, out] IHTMLElement **pel);
    [id (DISPID_IHTMLDOCUMENT3_GETELEMENTSBYTAGNAME)] HRESULT getElementsByTagName ([in] BSTR v,[retval, out] IHTMLElementCollection **pelColl);
  };
  [odl, oleautomation, dual, uuid (3050f69a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDocument4 : IDispatch {
    [id (DISPID_IHTMLDOCUMENT4_FOCUS)] HRESULT focus ();
    [id (DISPID_IHTMLDOCUMENT4_HASFOCUS)] HRESULT hasFocus ([retval, out] VARIANT_BOOL *pfFocus);
    [propput, id (DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE), displaybind, bindable] HRESULT onselectionchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE), displaybind, bindable] HRESULT onselectionchange ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLDOCUMENT4_NAMESPACES)] HRESULT namespaces ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOCUMENT4_CREATEDOCUMENTFROMURL)] HRESULT createDocumentFromUrl ([in] BSTR bstrUrl,[in] BSTR bstrOptions,[retval, out] IHTMLDocument2 **newDoc);
    [propput, id (DISPID_IHTMLDOCUMENT4_MEDIA)] HRESULT media ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT4_MEDIA)] HRESULT media ([retval, out] BSTR *p);
    [id (DISPID_IHTMLDOCUMENT4_CREATEEVENTOBJECT)] HRESULT createEventObject ([optional, in] VARIANT *pvarEventObject,[retval, out] IHTMLEventObj **ppEventObj);
    [id (DISPID_IHTMLDOCUMENT4_FIREEVENT)] HRESULT fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject,[retval, out] VARIANT_BOOL *pfCancelled);
    [id (DISPID_IHTMLDOCUMENT4_CREATERENDERSTYLE)] HRESULT createRenderStyle ([in] BSTR v,[retval, out] IHTMLRenderStyle **ppIHTMLRenderStyle);
    [propput, id (DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT), displaybind, bindable] HRESULT oncontrolselect ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT), displaybind, bindable] HRESULT oncontrolselect ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLDOCUMENT4_URLUNENCODED)] HRESULT URLUnencoded ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f80c-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDocument5 : IDispatch {
    [propput, id (DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL), displaybind, bindable] HRESULT onmousewheel ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL), displaybind, bindable] HRESULT onmousewheel ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLDOCUMENT5_DOCTYPE)] HRESULT doctype ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLDOCUMENT5_IMPLEMENTATION)] HRESULT implementation ([retval, out] IHTMLDOMImplementation **p);
    [id (DISPID_IHTMLDOCUMENT5_CREATEATTRIBUTE)] HRESULT createAttribute ([in] BSTR bstrattrName,[retval, out] IHTMLDOMAttribute **ppattribute);
    [id (DISPID_IHTMLDOCUMENT5_CREATECOMMENT)] HRESULT createComment ([in] BSTR bstrdata,[retval, out] IHTMLDOMNode **ppRetNode);
    [propput, id (DISPID_IHTMLDOCUMENT5_ONFOCUSIN), displaybind, bindable] HRESULT onfocusin ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT5_ONFOCUSIN), displaybind, bindable] HRESULT onfocusin ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT5_ONFOCUSOUT), displaybind, bindable] HRESULT onfocusout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT5_ONFOCUSOUT), displaybind, bindable] HRESULT onfocusout ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT5_ONACTIVATE), displaybind, bindable] HRESULT onactivate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT5_ONACTIVATE), displaybind, bindable] HRESULT onactivate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT5_ONDEACTIVATE), displaybind, bindable] HRESULT ondeactivate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT5_ONDEACTIVATE), displaybind, bindable] HRESULT ondeactivate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE), displaybind, bindable] HRESULT onbeforeactivate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE), displaybind, bindable] HRESULT onbeforeactivate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE), displaybind, bindable] HRESULT onbeforedeactivate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE), displaybind, bindable] HRESULT onbeforedeactivate ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLDOCUMENT5_COMPATMODE)] HRESULT compatMode ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510417-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDocument6 : IDispatch {
    [propget, id (DISPID_IHTMLDOCUMENT6_COMPATIBLE)] HRESULT compatible ([retval, out] IHTMLDocumentCompatibleInfoCollection **p);
    [propget, id (DISPID_IHTMLDOCUMENT6_DOCUMENTMODE)] HRESULT documentMode ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT6_ONSTORAGE), displaybind, bindable] HRESULT onstorage ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT6_ONSTORAGE), displaybind, bindable] HRESULT onstorage ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT6_ONSTORAGECOMMIT), displaybind, bindable] HRESULT onstoragecommit ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT6_ONSTORAGECOMMIT), displaybind, bindable] HRESULT onstoragecommit ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDOCUMENT6_IE8_GETELEMENTBYID)] HRESULT getElementById ([in] BSTR bstrId,[retval, out] IHTMLElement2 **ppRetElement);
    [id (DISPID_IHTMLDOCUMENT6_UPDATESETTINGS)] HRESULT updateSettings ();
  };
  [odl, oleautomation, dual, uuid (305104b8-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDocument7 : IDispatch {
    [propget, id (DISPID_IHTMLDOCUMENT7_DEFAULTVIEW)] HRESULT defaultView ([retval, out] IHTMLWindow2 **p);
    [id (DISPID_IHTMLDOCUMENT7_CREATECDATASECTION)] HRESULT createCDATASection ([in] BSTR text,[retval, out] IHTMLDOMNode **newCDATASectionNode);
    [id (DISPID_IHTMLDOCUMENT7_GETSELECTION)] HRESULT getSelection ([retval, out] IHTMLSelection **ppIHTMLSelection);
    [id (DISPID_IHTMLDOCUMENT7_GETELEMENTSBYTAGNAMENS)] HRESULT getElementsByTagNameNS ([in] VARIANT *pvarNS,[in] BSTR bstrLocalName,[retval, out] IHTMLElementCollection **pelColl);
    [id (DISPID_IHTMLDOCUMENT7_CREATEELEMENTNS)] HRESULT createElementNS ([in] VARIANT *pvarNS,[in] BSTR bstrTag,[retval, out] IHTMLElement **newElem);
    [id (DISPID_IHTMLDOCUMENT7_CREATEATTRIBUTENS)] HRESULT createAttributeNS ([in] VARIANT *pvarNS,[in] BSTR bstrAttrName,[retval, out] IHTMLDOMAttribute **ppAttribute);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONMSTHUMBNAILCLICK), displaybind, bindable] HRESULT onmsthumbnailclick ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONMSTHUMBNAILCLICK), displaybind, bindable] HRESULT onmsthumbnailclick ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLDOCUMENT7_CHARACTERSET)] HRESULT characterSet ([retval, out] BSTR *p);
    [id (DISPID_IHTMLDOCUMENT7_IE9_CREATEELEMENT)] HRESULT createElement ([in] BSTR bstrTag,[retval, out] IHTMLElement **newElem);
    [id (DISPID_IHTMLDOCUMENT7_IE9_CREATEATTRIBUTE)] HRESULT createAttribute ([in] BSTR bstrAttrName,[retval, out] IHTMLDOMAttribute **ppAttribute);
    [id (DISPID_IHTMLDOCUMENT7_GETELEMENTSBYCLASSNAME)] HRESULT getElementsByClassName ([in] BSTR v,[retval, out] IHTMLElementCollection **pel);
    [id (DISPID_IHTMLDOCUMENT7_CREATEPROCESSINGINSTRUCTION)] HRESULT createProcessingInstruction ([in] BSTR bstrTarget,[in] BSTR bstrData,[retval, out] IDOMProcessingInstruction **newProcessingInstruction);
    [id (DISPID_IHTMLDOCUMENT7_ADOPTNODE)] HRESULT adoptNode ([in] IHTMLDOMNode *pNodeSource,[retval, out] IHTMLDOMNode3 **ppNodeDest);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONMSSITEMODEJUMPLISTITEMREMOVED), displaybind, bindable] HRESULT onmssitemodejumplistitemremoved ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONMSSITEMODEJUMPLISTITEMREMOVED), displaybind, bindable] HRESULT onmssitemodejumplistitemremoved ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLDOCUMENT7_IE9_ALL)] HRESULT all ([retval, out] IHTMLElementCollection **p);
    [propget, id (DISPID_IHTMLDOCUMENT7_INPUTENCODING)] HRESULT inputEncoding ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOCUMENT7_XMLENCODING)] HRESULT xmlEncoding ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_XMLSTANDALONE)] HRESULT xmlStandalone ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDOCUMENT7_XMLSTANDALONE)] HRESULT xmlStandalone ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_XMLVERSION)] HRESULT xmlVersion ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT7_XMLVERSION)] HRESULT xmlVersion ([retval, out] BSTR *p);
    [id (DISPID_IHTMLDOCUMENT7_HASATTRIBUTES)] HRESULT hasAttributes ([retval, out] VARIANT_BOOL *pfHasAttributes);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONABORT), displaybind, bindable] HRESULT onabort ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONABORT), displaybind, bindable] HRESULT onabort ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONBLUR), displaybind, bindable] HRESULT onblur ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONBLUR), displaybind, bindable] HRESULT onblur ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONCANPLAY), displaybind, bindable] HRESULT oncanplay ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONCANPLAY), displaybind, bindable] HRESULT oncanplay ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONCANPLAYTHROUGH), displaybind, bindable] HRESULT oncanplaythrough ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONCANPLAYTHROUGH), displaybind, bindable] HRESULT oncanplaythrough ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONCHANGE), displaybind, bindable] HRESULT onchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONCHANGE), displaybind, bindable] HRESULT onchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAG), displaybind, bindable] HRESULT ondrag ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAG), displaybind, bindable] HRESULT ondrag ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAGEND), displaybind, bindable] HRESULT ondragend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAGEND), displaybind, bindable] HRESULT ondragend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAGENTER), displaybind, bindable] HRESULT ondragenter ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAGENTER), displaybind, bindable] HRESULT ondragenter ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAGLEAVE), displaybind, bindable] HRESULT ondragleave ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAGLEAVE), displaybind, bindable] HRESULT ondragleave ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAGOVER), displaybind, bindable] HRESULT ondragover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAGOVER), displaybind, bindable] HRESULT ondragover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDROP), displaybind, bindable] HRESULT ondrop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDROP), displaybind, bindable] HRESULT ondrop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDURATIONCHANGE), displaybind, bindable] HRESULT ondurationchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDURATIONCHANGE), displaybind, bindable] HRESULT ondurationchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONEMPTIED), displaybind, bindable] HRESULT onemptied ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONEMPTIED), displaybind, bindable] HRESULT onemptied ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONENDED), displaybind, bindable] HRESULT onended ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONENDED), displaybind, bindable] HRESULT onended ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONERROR), displaybind, bindable] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONERROR), displaybind, bindable] HRESULT onerror ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONFOCUS), displaybind, bindable] HRESULT onfocus ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONFOCUS), displaybind, bindable] HRESULT onfocus ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONINPUT), displaybind, bindable] HRESULT oninput ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONINPUT), displaybind, bindable] HRESULT oninput ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONLOADEDDATA), displaybind, bindable] HRESULT onloadeddata ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONLOADEDDATA), displaybind, bindable] HRESULT onloadeddata ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONLOADEDMETADATA), displaybind, bindable] HRESULT onloadedmetadata ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONLOADEDMETADATA), displaybind, bindable] HRESULT onloadedmetadata ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONLOADSTART), displaybind, bindable] HRESULT onloadstart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONLOADSTART), displaybind, bindable] HRESULT onloadstart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONPAUSE), displaybind, bindable] HRESULT onpause ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONPAUSE), displaybind, bindable] HRESULT onpause ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONPLAY), displaybind, bindable] HRESULT onplay ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONPLAY), displaybind, bindable] HRESULT onplay ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONPLAYING), displaybind, bindable] HRESULT onplaying ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONPLAYING), displaybind, bindable] HRESULT onplaying ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONPROGRESS), displaybind, bindable] HRESULT onprogress ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONPROGRESS), displaybind, bindable] HRESULT onprogress ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONRATECHANGE), displaybind, bindable] HRESULT onratechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONRATECHANGE), displaybind, bindable] HRESULT onratechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONRESET), displaybind, bindable] HRESULT onreset ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONRESET), displaybind, bindable] HRESULT onreset ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSCROLL), displaybind, bindable] HRESULT onscroll ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSCROLL), displaybind, bindable] HRESULT onscroll ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSEEKED), displaybind, bindable] HRESULT onseeked ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSEEKED), displaybind, bindable] HRESULT onseeked ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSEEKING), displaybind, bindable] HRESULT onseeking ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSEEKING), displaybind, bindable] HRESULT onseeking ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSELECT), displaybind, bindable] HRESULT onselect ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSELECT), displaybind, bindable] HRESULT onselect ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSTALLED), displaybind, bindable] HRESULT onstalled ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSTALLED), displaybind, bindable] HRESULT onstalled ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSUBMIT), displaybind, bindable] HRESULT onsubmit ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSUBMIT), displaybind, bindable] HRESULT onsubmit ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSUSPEND), displaybind, bindable] HRESULT onsuspend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSUSPEND), displaybind, bindable] HRESULT onsuspend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONTIMEUPDATE), displaybind, bindable] HRESULT ontimeupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONTIMEUPDATE), displaybind, bindable] HRESULT ontimeupdate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONVOLUMECHANGE), displaybind, bindable] HRESULT onvolumechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONVOLUMECHANGE), displaybind, bindable] HRESULT onvolumechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONWAITING), displaybind, bindable] HRESULT onwaiting ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONWAITING), displaybind, bindable] HRESULT onwaiting ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDOCUMENT7_NORMALIZE)] HRESULT normalize ();
    [id (DISPID_IHTMLDOCUMENT7_IMPORTNODE)] HRESULT importNode ([in] IHTMLDOMNode *pNodeSource,[in] VARIANT_BOOL fDeep,[retval, out] IHTMLDOMNode3 **ppNodeDest);
    [propget, id (DISPID_IHTMLDOCUMENT7_IE9_PARENTWINDOW)] HRESULT parentWindow ([retval, out] IHTMLWindow2 **p);
    [propputref, id (DISPID_IHTMLDOCUMENT7_IE9_BODY)] HRESULT body ([in] IHTMLElement *v);
    [propget, id (DISPID_IHTMLDOCUMENT7_IE9_BODY)] HRESULT body ([retval, out] IHTMLElement **p);
    [propget, id (DISPID_IHTMLDOCUMENT7_HEAD)] HRESULT head ([retval, out] IHTMLElement **p);
  };
  [odl, oleautomation, dual, uuid (305107d0-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDocument8 : IDispatch {
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSCONTENTZOOM), displaybind, bindable] HRESULT onmscontentzoom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSCONTENTZOOM), displaybind, bindable] HRESULT onmscontentzoom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERDOWN), displaybind, bindable] HRESULT onmspointerdown ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERDOWN), displaybind, bindable] HRESULT onmspointerdown ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERMOVE), displaybind, bindable] HRESULT onmspointermove ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERMOVE), displaybind, bindable] HRESULT onmspointermove ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERUP), displaybind, bindable] HRESULT onmspointerup ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERUP), displaybind, bindable] HRESULT onmspointerup ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTEROVER), displaybind, bindable] HRESULT onmspointerover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTEROVER), displaybind, bindable] HRESULT onmspointerover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTEROUT), displaybind, bindable] HRESULT onmspointerout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTEROUT), displaybind, bindable] HRESULT onmspointerout ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERCANCEL), displaybind, bindable] HRESULT onmspointercancel ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERCANCEL), displaybind, bindable] HRESULT onmspointercancel ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERHOVER), displaybind, bindable] HRESULT onmspointerhover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERHOVER), displaybind, bindable] HRESULT onmspointerhover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURESTART), displaybind, bindable] HRESULT onmsgesturestart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURESTART), displaybind, bindable] HRESULT onmsgesturestart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURECHANGE), displaybind, bindable] HRESULT onmsgesturechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURECHANGE), displaybind, bindable] HRESULT onmsgesturechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREEND), displaybind, bindable] HRESULT onmsgestureend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREEND), displaybind, bindable] HRESULT onmsgestureend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREHOLD), displaybind, bindable] HRESULT onmsgesturehold ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREHOLD), displaybind, bindable] HRESULT onmsgesturehold ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURETAP), displaybind, bindable] HRESULT onmsgesturetap ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURETAP), displaybind, bindable] HRESULT onmsgesturetap ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREDOUBLETAP), displaybind, bindable] HRESULT onmsgesturedoubletap ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREDOUBLETAP), displaybind, bindable] HRESULT onmsgesturedoubletap ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSINERTIASTART), displaybind, bindable] HRESULT onmsinertiastart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSINERTIASTART), displaybind, bindable] HRESULT onmsinertiastart ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDOCUMENT8_ELEMENTSFROMPOINT)] HRESULT elementsFromPoint ([in] float x,[in] float y,[retval, out] IHTMLDOMChildrenCollection **elementsHit);
    [id (DISPID_IHTMLDOCUMENT8_ELEMENTSFROMRECT)] HRESULT elementsFromRect ([in] float left,[in] float top,[in] float width,[in] float height,[retval, out] IHTMLDOMChildrenCollection **elementsHit);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable] HRESULT onmsmanipulationstatechanged ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable] HRESULT onmsmanipulationstatechanged ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_MSCAPSLOCKWARNINGOFF)] HRESULT msCapsLockWarningOff ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDOCUMENT8_MSCAPSLOCKWARNINGOFF)] HRESULT msCapsLockWarningOff ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (305104bc-98b5-11cf-bb82-00aa00bdce0b)] interface IDocumentEvent : IDispatch {
    [id (DISPID_IDOCUMENTEVENT_CREATEEVENT)] HRESULT createEvent ([in] BSTR eventType,[retval, out] IDOMEvent **ppEvent);
  };
  [odl, oleautomation, dual, uuid (305104af-98b5-11cf-bb82-00aa00bdce0b)] interface IDocumentRange : IDispatch {
    [id (DISPID_IDOCUMENTRANGE_CREATERANGE)] HRESULT createRange ([retval, out] IHTMLDOMRange **ppIHTMLDOMRange);
  };
  [odl, oleautomation, dual, uuid (30510462-98b5-11cf-bb82-00aa00bdce0b)] interface IDocumentSelector : IDispatch {
    [id (DISPID_IDOCUMENTSELECTOR_QUERYSELECTOR)] HRESULT querySelector ([in] BSTR v,[retval, out] IHTMLElement **pel);
    [id (DISPID_IDOCUMENTSELECTOR_QUERYSELECTORALL)] HRESULT querySelectorAll ([in] BSTR v,[retval, out] IHTMLDOMChildrenCollection **pel);
  };
  [odl, oleautomation, dual, uuid (30510744-98b5-11cf-bb82-00aa00bdce0b)] interface IDocumentTraversal : IDispatch {
    [id (DISPID_IDOCUMENTTRAVERSAL_CREATENODEITERATOR)] HRESULT createNodeIterator ([in] IDispatch *pRootNode,[in] long ulWhatToShow,[in] VARIANT *pFilter,[in] VARIANT_BOOL fEntityReferenceExpansion,[retval, out] IDOMNodeIterator **ppNodeIterator);
    [id (DISPID_IDOCUMENTTRAVERSAL_CREATETREEWALKER)] HRESULT createTreeWalker ([in] IDispatch *pRootNode,[in] long ulWhatToShow,[in] VARIANT *pFilter,[in] VARIANT_BOOL fEntityReferenceExpansion,[retval, out] IDOMTreeWalker **ppTreeWalker);
  };
  [hidden, uuid (3050f55f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDocument {
    properties:
    methods:
    [propget, id (DISPID_IHTMLDOCUMENT_SCRIPT), hidden, nonbrowsable] IDispatch *Script ();
    [propget, id (DISPID_IHTMLDOCUMENT2_ALL)] IHTMLElementCollection *all ();
    [propget, id (DISPID_IHTMLDOCUMENT2_BODY)] IHTMLElement *body ();
    [propget, id (DISPID_IHTMLDOCUMENT2_ACTIVEELEMENT)] IHTMLElement *activeElement ();
    [propget, id (DISPID_IHTMLDOCUMENT2_IMAGES)] IHTMLElementCollection *images ();
    [propget, id (DISPID_IHTMLDOCUMENT2_APPLETS)] IHTMLElementCollection *applets ();
    [propget, id (DISPID_IHTMLDOCUMENT2_LINKS)] IHTMLElementCollection *links ();
    [propget, id (DISPID_IHTMLDOCUMENT2_FORMS)] IHTMLElementCollection *forms ();
    [propget, id (DISPID_IHTMLDOCUMENT2_ANCHORS)] IHTMLElementCollection *anchors ();
    [propput, id (DISPID_IHTMLDOCUMENT2_TITLE)] void title (BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT2_TITLE)] BSTR title ();
    [propget, id (DISPID_IHTMLDOCUMENT2_SCRIPTS)] IHTMLElementCollection *scripts ();
    [propput, id (DISPID_IHTMLDOCUMENT2_DESIGNMODE), hidden] void designMode (BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT2_DESIGNMODE), hidden] BSTR designMode ();
    [propget, id (DISPID_IHTMLDOCUMENT2_SELECTION)] IHTMLSelectionObject *selection ();
    [propget, id (DISPID_IHTMLDOCUMENT2_READYSTATE), bindable] BSTR readyState ();
    [propget, id (DISPID_IHTMLDOCUMENT2_FRAMES)] IHTMLFramesCollection2 *frames ();
    [propget, id (DISPID_IHTMLDOCUMENT2_EMBEDS)] IHTMLElementCollection *embeds ();
    [propget, id (DISPID_IHTMLDOCUMENT2_PLUGINS)] IHTMLElementCollection *plugins ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ALINKCOLOR)] void alinkColor (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ALINKCOLOR)] VARIANT alinkColor ();
    [propput, id (DISPID_IHTMLDOCUMENT2_BGCOLOR)] void bgColor (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_BGCOLOR)] VARIANT bgColor ();
    [propput, id (DISPID_IHTMLDOCUMENT2_FGCOLOR)] void fgColor (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_FGCOLOR)] VARIANT fgColor ();
    [propput, id (DISPID_IHTMLDOCUMENT2_LINKCOLOR)] void linkColor (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_LINKCOLOR)] VARIANT linkColor ();
    [propput, id (DISPID_IHTMLDOCUMENT2_VLINKCOLOR)] void vlinkColor (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_VLINKCOLOR)] VARIANT vlinkColor ();
    [propget, id (DISPID_IHTMLDOCUMENT2_REFERRER)] BSTR referrer ();
    [propget, id (DISPID_IHTMLDOCUMENT2_LOCATION)] IHTMLLocation *location ();
    [propget, id (DISPID_IHTMLDOCUMENT2_LASTMODIFIED)] BSTR lastModified ();
    [propput, id (DISPID_IHTMLDOCUMENT2_URL)] void URL (BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT2_URL)] BSTR URL ();
    [propput, id (DISPID_IHTMLDOCUMENT2_DOMAIN)] void domain (BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT2_DOMAIN)] BSTR domain ();
    [propput, id (DISPID_IHTMLDOCUMENT2_COOKIE)] void cookie (BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT2_COOKIE)] BSTR cookie ();
    [propput, id (DISPID_IHTMLDOCUMENT2_EXPANDO), bindable, hidden] void expando (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDOCUMENT2_EXPANDO), bindable, hidden] VARIANT_BOOL expando ();
    [propput, id (DISPID_IHTMLDOCUMENT2_CHARSET), hidden] void charset (BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT2_CHARSET), hidden] BSTR charset ();
    [propput, id (DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)] void defaultCharset (BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)] BSTR defaultCharset ();
    [propget, id (DISPID_IHTMLDOCUMENT2_MIMETYPE)] BSTR mimeType ();
    [propget, id (DISPID_IHTMLDOCUMENT2_FILESIZE)] BSTR fileSize ();
    [propget, id (DISPID_IHTMLDOCUMENT2_FILECREATEDDATE)] BSTR fileCreatedDate ();
    [propget, id (DISPID_IHTMLDOCUMENT2_FILEMODIFIEDDATE)] BSTR fileModifiedDate ();
    [propget, id (DISPID_IHTMLDOCUMENT2_FILEUPDATEDDATE)] BSTR fileUpdatedDate ();
    [propget, id (DISPID_IHTMLDOCUMENT2_SECURITY)] BSTR security ();
    [propget, id (DISPID_IHTMLDOCUMENT2_PROTOCOL)] BSTR protocol ();
    [propget, id (DISPID_IHTMLDOCUMENT2_NAMEPROP)] BSTR nameProp ();
    [vararg, id (DISPID_IHTMLDOCUMENT2_WRITE)] void write ([in] SAFEARRAY (VARIANT) psarray);
    [vararg, id (DISPID_IHTMLDOCUMENT2_WRITELN)] void writeln ([in] SAFEARRAY (VARIANT) psarray);
    [id (DISPID_IHTMLDOCUMENT2_OPEN)] IDispatch *open ([/*defaultvalue (L"text/html"),*/ in] BSTR url,[optional, in] VARIANT name,[optional, in] VARIANT features,[optional, in] VARIANT replace);
    [id (DISPID_IHTMLDOCUMENT2_CLOSE)] void close ();
    [id (DISPID_IHTMLDOCUMENT2_CLEAR)] void clear ();
    [id (DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSUPPORTED)] VARIANT_BOOL queryCommandSupported ([in] BSTR cmdID);
    [id (DISPID_IHTMLDOCUMENT2_QUERYCOMMANDENABLED)] VARIANT_BOOL queryCommandEnabled ([in] BSTR cmdID);
    [id (DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSTATE)] VARIANT_BOOL queryCommandState ([in] BSTR cmdID);
    [id (DISPID_IHTMLDOCUMENT2_QUERYCOMMANDINDETERM)] VARIANT_BOOL queryCommandIndeterm ([in] BSTR cmdID);
    [id (DISPID_IHTMLDOCUMENT2_QUERYCOMMANDTEXT)] BSTR queryCommandText ([in] BSTR cmdID);
    [id (DISPID_IHTMLDOCUMENT2_QUERYCOMMANDVALUE)] VARIANT queryCommandValue ([in] BSTR cmdID);
    [id (DISPID_IHTMLDOCUMENT2_EXECCOMMAND)] VARIANT_BOOL execCommand ([in] BSTR cmdID,[in] VARIANT_BOOL showUI,[optional, in] VARIANT value);
    [id (DISPID_IHTMLDOCUMENT2_EXECCOMMANDSHOWHELP)] VARIANT_BOOL execCommandShowHelp ([in] BSTR cmdID);
    [id (DISPID_IHTMLDOCUMENT2_CREATEELEMENT)] IHTMLElement *createElement ([in] BSTR eTag);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLDOCUMENT2_ELEMENTFROMPOINT)] IHTMLElement *elementFromPoint ([in] long x,[in] long y);
    [propget, id (DISPID_IHTMLDOCUMENT2_PARENTWINDOW)] IHTMLWindow2 *parentWindow ();
    [propget, id (DISPID_IHTMLDOCUMENT2_STYLESHEETS)] IHTMLStyleSheetsCollection *styleSheets ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLDOCUMENT2_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [id (DISPID_IHTMLDOCUMENT2_TOSTRING)] BSTR toString ();
    [id (DISPID_IHTMLDOCUMENT2_CREATESTYLESHEET)] IHTMLStyleSheet *createStyleSheet ([defaultvalue (L""), in] BSTR bstrHref,[defaultvalue (-1), in] long lIndex);
    [id (DISPID_IHTMLDOCUMENT3_RELEASECAPTURE)] void releaseCapture ();
    [id (DISPID_IHTMLDOCUMENT3_RECALC)] void recalc ([defaultvalue (0), in] VARIANT_BOOL fForce);
    [id (DISPID_IHTMLDOCUMENT3_CREATETEXTNODE)] IHTMLDOMNode *createTextNode ([in] BSTR text);
    [propget, id (DISPID_IHTMLDOCUMENT3_DOCUMENTELEMENT)] IHTMLElement *documentElement ();
    [propget, id (DISPID_IHTMLDOCUMENT3_UNIQUEID), hidden] BSTR uniqueID ();
    [id (DISPID_IHTMLDOCUMENT3_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLDOCUMENT3_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propput, id (DISPID_IHTMLDOCUMENT3_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLDOCUMENT3_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLDOCUMENT3_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [propput, id (DISPID_IHTMLDOCUMENT3_DIR)] void dir (BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT3_DIR)] BSTR dir ();
    [propput, id (DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [propput, id (DISPID_IHTMLDOCUMENT3_ONSTOP), displaybind, bindable] void onstop (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONSTOP), displaybind, bindable] VARIANT onstop ();
    [id (DISPID_IHTMLDOCUMENT3_CREATEDOCUMENTFRAGMENT)] IHTMLDocument2 *createDocumentFragment ();
    [propget, id (DISPID_IHTMLDOCUMENT3_PARENTDOCUMENT), hidden, restricted] IHTMLDocument2 *parentDocument ();
    [propput, id (DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD), hidden, restricted] void enableDownload (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD), hidden, restricted] VARIANT_BOOL enableDownload ();
    [propput, id (DISPID_IHTMLDOCUMENT3_BASEURL), hidden, restricted] void baseUrl (BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT3_BASEURL), hidden, restricted] BSTR baseUrl ();
    [propput, id (DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS), hidden, restricted] void inheritStyleSheets (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS), hidden, restricted] VARIANT_BOOL inheritStyleSheets ();
    [propput, id (DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [id (DISPID_IHTMLDOCUMENT3_GETELEMENTSBYNAME)] IHTMLElementCollection *getElementsByName ([in] BSTR v);
    [id (DISPID_IHTMLDOCUMENT3_GETELEMENTBYID)] IHTMLElement *getElementById ([in] BSTR v);
    [id (DISPID_IHTMLDOCUMENT3_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLDOCUMENT4_FOCUS)] void focus ();
    [id (DISPID_IHTMLDOCUMENT4_HASFOCUS)] VARIANT_BOOL hasFocus ();
    [propput, id (DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE), displaybind, bindable] void onselectionchange (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE), displaybind, bindable] VARIANT onselectionchange ();
    [propget, id (DISPID_IHTMLDOCUMENT4_NAMESPACES)] IDispatch *namespaces ();
    [id (DISPID_IHTMLDOCUMENT4_CREATEDOCUMENTFROMURL)] IHTMLDocument2 *createDocumentFromUrl ([in] BSTR bstrUrl,[in] BSTR bstrOptions);
    [propput, id (DISPID_IHTMLDOCUMENT4_MEDIA)] void media (BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT4_MEDIA)] BSTR media ();
    [id (DISPID_IHTMLDOCUMENT4_CREATEEVENTOBJECT)] IHTMLEventObj *createEventObject ([optional, in] VARIANT *pvarEventObject);
    [id (DISPID_IHTMLDOCUMENT4_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [id (DISPID_IHTMLDOCUMENT4_CREATERENDERSTYLE)] IHTMLRenderStyle *createRenderStyle ([in] BSTR v);
    [propput, id (DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [propget, id (DISPID_IHTMLDOCUMENT4_URLUNENCODED)] BSTR URLUnencoded ();
    [propput, id (DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [propget, id (DISPID_IHTMLDOCUMENT5_DOCTYPE)] IHTMLDOMNode *doctype ();
    [propget, id (DISPID_IHTMLDOCUMENT5_IMPLEMENTATION)] IHTMLDOMImplementation *implementation ();
    [id (DISPID_IHTMLDOCUMENT5_CREATEATTRIBUTE)] IHTMLDOMAttribute *createAttribute ([in] BSTR bstrattrName);
    [id (DISPID_IHTMLDOCUMENT5_CREATECOMMENT)] IHTMLDOMNode *createComment ([in] BSTR bstrdata);
    [propput, id (DISPID_IHTMLDOCUMENT5_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT5_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLDOCUMENT5_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT5_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propput, id (DISPID_IHTMLDOCUMENT5_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT5_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLDOCUMENT5_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT5_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [propput, id (DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [propget, id (DISPID_IHTMLDOCUMENT5_COMPATMODE)] BSTR compatMode ();
    [propget, id (DISPID_IHTMLDOCUMENT6_COMPATIBLE)] IHTMLDocumentCompatibleInfoCollection *compatible ();
    [propget, id (DISPID_IHTMLDOCUMENT6_DOCUMENTMODE)] VARIANT documentMode ();
    [propput, id (DISPID_IHTMLDOCUMENT6_ONSTORAGE), displaybind, bindable] void onstorage (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT6_ONSTORAGE), displaybind, bindable] VARIANT onstorage ();
    [propput, id (DISPID_IHTMLDOCUMENT6_ONSTORAGECOMMIT), displaybind, bindable] void onstoragecommit (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT6_ONSTORAGECOMMIT), displaybind, bindable] VARIANT onstoragecommit ();
    [id (DISPID_IHTMLDOCUMENT6_IE8_GETELEMENTBYID)] IHTMLElement2 *ie8_getElementById ([in] BSTR bstrId);
    [id (DISPID_IHTMLDOCUMENT6_UPDATESETTINGS)] void updateSettings ();
    [propget, id (DISPID_IHTMLDOCUMENT7_DEFAULTVIEW)] IHTMLWindow2 *defaultView ();
    [id (DISPID_IHTMLDOCUMENT7_CREATECDATASECTION)] IHTMLDOMNode *createCDATASection ([in] BSTR text);
    [id (DISPID_IHTMLDOCUMENT7_GETSELECTION)] IHTMLSelection *getSelection ();
    [id (DISPID_IHTMLDOCUMENT7_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *pvarNS,[in] BSTR bstrLocalName);
    [id (DISPID_IHTMLDOCUMENT7_CREATEELEMENTNS)] IHTMLElement *createElementNS ([in] VARIANT *pvarNS,[in] BSTR bstrTag);
    [id (DISPID_IHTMLDOCUMENT7_CREATEATTRIBUTENS)] IHTMLDOMAttribute *createAttributeNS ([in] VARIANT *pvarNS,[in] BSTR bstrAttrName);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONMSTHUMBNAILCLICK), displaybind, bindable] void onmsthumbnailclick (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONMSTHUMBNAILCLICK), displaybind, bindable] VARIANT onmsthumbnailclick ();
    [propget, id (DISPID_IHTMLDOCUMENT7_CHARACTERSET)] BSTR characterSet ();
    [id (DISPID_IHTMLDOCUMENT7_IE9_CREATEELEMENT)] IHTMLElement *ie9_createElement ([in] BSTR bstrTag);
    [id (DISPID_IHTMLDOCUMENT7_IE9_CREATEATTRIBUTE)] IHTMLDOMAttribute *ie9_createAttribute ([in] BSTR bstrAttrName);
    [id (DISPID_IHTMLDOCUMENT7_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLDOCUMENT7_CREATEPROCESSINGINSTRUCTION)] IDOMProcessingInstruction *createProcessingInstruction ([in] BSTR bstrTarget,[in] BSTR bstrData);
    [id (DISPID_IHTMLDOCUMENT7_ADOPTNODE)] IHTMLDOMNode3 *adoptNode ([in] IHTMLDOMNode *pNodeSource);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONMSSITEMODEJUMPLISTITEMREMOVED), displaybind, bindable] void onmssitemodejumplistitemremoved (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONMSSITEMODEJUMPLISTITEMREMOVED), displaybind, bindable] VARIANT onmssitemodejumplistitemremoved ();
    [propget, id (DISPID_IHTMLDOCUMENT7_IE9_ALL)] IHTMLElementCollection *ie9_all ();
    [propget, id (DISPID_IHTMLDOCUMENT7_INPUTENCODING)] BSTR inputEncoding ();
    [propget, id (DISPID_IHTMLDOCUMENT7_XMLENCODING)] BSTR xmlEncoding ();
    [propput, id (DISPID_IHTMLDOCUMENT7_XMLSTANDALONE)] void xmlStandalone (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDOCUMENT7_XMLSTANDALONE)] VARIANT_BOOL xmlStandalone ();
    [propput, id (DISPID_IHTMLDOCUMENT7_XMLVERSION)] void xmlVersion (BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT7_XMLVERSION)] BSTR xmlVersion ();
    [id (DISPID_IHTMLDOCUMENT7_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONCANPLAY), displaybind, bindable] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONCANPLAY), displaybind, bindable] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONCANPLAYTHROUGH), displaybind, bindable] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONCANPLAYTHROUGH), displaybind, bindable] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDURATIONCHANGE), displaybind, bindable] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDURATIONCHANGE), displaybind, bindable] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONEMPTIED), displaybind, bindable] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONEMPTIED), displaybind, bindable] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONENDED), displaybind, bindable] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONENDED), displaybind, bindable] VARIANT onended ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONINPUT), displaybind, bindable] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONINPUT), displaybind, bindable] VARIANT oninput ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONLOADEDDATA), displaybind, bindable] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONLOADEDDATA), displaybind, bindable] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONLOADEDMETADATA), displaybind, bindable] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONLOADEDMETADATA), displaybind, bindable] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONLOADSTART), displaybind, bindable] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONLOADSTART), displaybind, bindable] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONPAUSE), displaybind, bindable] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONPAUSE), displaybind, bindable] VARIANT onpause ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONPLAY), displaybind, bindable] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONPLAY), displaybind, bindable] VARIANT onplay ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONPLAYING), displaybind, bindable] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONPLAYING), displaybind, bindable] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONPROGRESS), displaybind, bindable] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONPROGRESS), displaybind, bindable] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONRATECHANGE), displaybind, bindable] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONRATECHANGE), displaybind, bindable] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSEEKED), displaybind, bindable] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSEEKED), displaybind, bindable] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSEEKING), displaybind, bindable] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSEEKING), displaybind, bindable] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSTALLED), displaybind, bindable] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSTALLED), displaybind, bindable] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSUSPEND), displaybind, bindable] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSUSPEND), displaybind, bindable] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONTIMEUPDATE), displaybind, bindable] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONTIMEUPDATE), displaybind, bindable] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONVOLUMECHANGE), displaybind, bindable] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONVOLUMECHANGE), displaybind, bindable] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONWAITING), displaybind, bindable] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONWAITING), displaybind, bindable] VARIANT onwaiting ();
    [id (DISPID_IHTMLDOCUMENT7_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLDOCUMENT7_IMPORTNODE)] IHTMLDOMNode3 *importNode ([in] IHTMLDOMNode *pNodeSource,[in] VARIANT_BOOL fDeep);
    [propget, id (DISPID_IHTMLDOCUMENT7_IE9_PARENTWINDOW)] IHTMLWindow2 *ie9_parentWindow ();
    [propputref, id (DISPID_IHTMLDOCUMENT7_IE9_BODY)] void ie9_body (IHTMLElement *v);
    [propget, id (DISPID_IHTMLDOCUMENT7_IE9_BODY)] IHTMLElement *ie9_body ();
    [propget, id (DISPID_IHTMLDOCUMENT7_HEAD)] IHTMLElement *head ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSCONTENTZOOM), displaybind, bindable] void onmscontentzoom (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSCONTENTZOOM), displaybind, bindable] VARIANT onmscontentzoom ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERDOWN), displaybind, bindable] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERDOWN), displaybind, bindable] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERMOVE), displaybind, bindable] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERMOVE), displaybind, bindable] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERUP), displaybind, bindable] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERUP), displaybind, bindable] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTEROVER), displaybind, bindable] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTEROVER), displaybind, bindable] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTEROUT), displaybind, bindable] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTEROUT), displaybind, bindable] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERCANCEL), displaybind, bindable] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERCANCEL), displaybind, bindable] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERHOVER), displaybind, bindable] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERHOVER), displaybind, bindable] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURESTART), displaybind, bindable] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURESTART), displaybind, bindable] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURECHANGE), displaybind, bindable] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURECHANGE), displaybind, bindable] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREEND), displaybind, bindable] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREEND), displaybind, bindable] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREHOLD), displaybind, bindable] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREHOLD), displaybind, bindable] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURETAP), displaybind, bindable] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURETAP), displaybind, bindable] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREDOUBLETAP), displaybind, bindable] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREDOUBLETAP), displaybind, bindable] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSINERTIASTART), displaybind, bindable] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSINERTIASTART), displaybind, bindable] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLDOCUMENT8_ELEMENTSFROMPOINT)] IHTMLDOMChildrenCollection *elementsFromPoint ([in] float x,[in] float y);
    [id (DISPID_IHTMLDOCUMENT8_ELEMENTSFROMRECT)] IHTMLDOMChildrenCollection *elementsFromRect ([in] float left,[in] float top,[in] float width,[in] float height);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLDOCUMENT8_MSCAPSLOCKWARNINGOFF)] void msCapsLockWarningOff (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDOCUMENT8_MSCAPSLOCKWARNINGOFF)] VARIANT_BOOL msCapsLockWarningOff ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [id (DISPID_IDOCUMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IDOCUMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [id (DISPID_IDOCUMENTTRAVERSAL_CREATENODEITERATOR)] IDOMNodeIterator *createNodeIterator ([in] IDispatch *pRootNode,[in] long ulWhatToShow,[in] VARIANT *pFilter,[in] VARIANT_BOOL fEntityReferenceExpansion);
    [id (DISPID_IDOCUMENTTRAVERSAL_CREATETREEWALKER)] IDOMTreeWalker *createTreeWalker ([in] IDispatch *pRootNode,[in] long ulWhatToShow,[in] VARIANT *pFilter,[in] VARIANT_BOOL fEntityReferenceExpansion);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [id (DISPID_IDOCUMENTEVENT_CREATEEVENT)] IDOMEvent *createEvent ([in] BSTR eventType);
    [id (DISPID_IDOCUMENTRANGE_CREATERANGE)] IHTMLDOMRange *createRange ();
    [id (DISPID_IEVENTTARGET_ADDEVENTLISTENER)] void addEventListener ([in] BSTR type,[in] IDispatch *listener,[in] VARIANT_BOOL useCapture);
    [id (DISPID_IEVENTTARGET_REMOVEEVENTLISTENER)] void removeEventListener ([in] BSTR type,[in] IDispatch *listener,[in] VARIANT_BOOL useCapture);
    [id (DISPID_IEVENTTARGET_DISPATCHEVENT)] VARIANT_BOOL dispatchEvent ([in] IDOMEvent *evt);
    [propget, id (DISPID_ISVGDOCUMENT_ROOTELEMENT)] ISVGSVGElement *rootElement ();
  };
  [uuid (25336920-03f9-11cf-8fd0-00aa00686f13)] coclass HTMLDocument {
    [default] dispinterface DispHTMLDocument;
    [source, default] dispinterface HTMLDocumentEvents;
    [source] dispinterface HTMLDocumentEvents2;
    [source] dispinterface HTMLDocumentEvents3;
    [source] dispinterface HTMLDocumentEvents4;
    interface IHTMLDocument2;
    interface IHTMLDocument3;
    interface IHTMLDocument4;
    interface IHTMLDocument5;
    interface IHTMLDocument6;
    interface IHTMLDocument7;
    interface IHTMLDocument8;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IDocumentSelector;
    interface IDocumentTraversal;
    interface IHTMLDOMConstructor;
    interface IDocumentEvent;
    interface IDocumentRange;
    interface IEventTarget;
    interface ISVGDocument;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDocument;")
  [hidden, uuid (A6D897FF-0a95-11d1-B0BA-006008166e11)] dispinterface DWebBridgeEvents {
    properties:
    methods:
    [id (DISPID_DWEBBRIDGEEVENTS_ONSCRIPTLETEVENT)] void onscriptletevent ([in] BSTR name,[in] VARIANT eventData);
    [id (DISPID_DWEBBRIDGEEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_DWEBBRIDGEEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_DWEBBRIDGEEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_DWEBBRIDGEEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_DWEBBRIDGEEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_DWEBBRIDGEEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_DWEBBRIDGEEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_DWEBBRIDGEEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_DWEBBRIDGEEVENTS_ONMOUSEUP)] void onmouseup ();
  };
  [odl, oleautomation, dual, uuid (AE24FDAD-03c6-11d1-8b76-0080c744f389)] interface IWebBridge : IDispatch {
    [propput, id (DISPID_IWEBBRIDGE_URL)] HRESULT URL ([in] BSTR v);
    [propget, id (DISPID_IWEBBRIDGE_URL)] HRESULT URL ([retval, out] BSTR *p);
    [propput, id (DISPID_IWEBBRIDGE_SCROLLBAR)] HRESULT Scrollbar ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IWEBBRIDGE_SCROLLBAR)] HRESULT Scrollbar ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IWEBBRIDGE_EMBED)] HRESULT embed ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IWEBBRIDGE_EMBED)] HRESULT embed ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IWEBBRIDGE_EVENT)] HRESULT event ([retval, out] IDispatch **p);
    [propget, id (DISPID_IWEBBRIDGE_READYSTATE)] HRESULT readyState ([retval, out] long *p);
    [id (DISPID_IWEBBRIDGE_ABOUTBOX)] HRESULT AboutBox ();
  };
  [odl, oleautomation, dual, uuid (A5170870-0cf8-11d1-8b91-0080c744f389)] interface IWBScriptControl : IDispatch {
    [id (DISPID_IWBSCRIPTCONTROL_RAISEEVENT)] HRESULT raiseEvent ([in] BSTR name,[in] VARIANT eventData);
    [id (DISPID_IWBSCRIPTCONTROL_BUBBLEEVENT)] HRESULT bubbleEvent ();
    [id (DISPID_IWBSCRIPTCONTROL_SETCONTEXTMENU)] HRESULT setContextMenu ([in] VARIANT menuItemPairs);
    [propput, id (DISPID_IWBSCRIPTCONTROL_SELECTABLECONTENT)] HRESULT selectableContent ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IWBSCRIPTCONTROL_SELECTABLECONTENT)] HRESULT selectableContent ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IWBSCRIPTCONTROL_FROZEN)] HRESULT frozen ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IWBSCRIPTCONTROL_SCROLLBAR)] HRESULT scrollbar ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IWBSCRIPTCONTROL_SCROLLBAR)] HRESULT scrollbar ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IWBSCRIPTCONTROL_VERSION)] HRESULT version ([retval, out] BSTR *p);
    [propget, id (DISPID_IWBSCRIPTCONTROL_VISIBILITY)] HRESULT visibility ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IWBSCRIPTCONTROL_ONVISIBILITYCHANGE)] HRESULT onvisibilitychange ([in] VARIANT v);
    [propget, id (DISPID_IWBSCRIPTCONTROL_ONVISIBILITYCHANGE)] HRESULT onvisibilitychange ([retval, out] VARIANT *p);
  };
  [control, uuid (AE24FDAE-03c6-11d1-8b76-0080c744f389)] coclass Scriptlet {
    [default] interface IWebBridge;
    [source, default] dispinterface DWebBridgeEvents;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CScriptlet;")
  typedef enum _BoolValue {
    True = 1,
    False = 0,
    BoolValue_Max = 0x7FFFFFFF
  } BoolValue;
  [odl, oleautomation, dual, uuid (3050f25f-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLEmbedElement : IDispatch {
    [propput, id (DISPID_IHTMLEMBEDELEMENT_HIDDEN)] HRESULT hidden ([in] BSTR v);
    [propget, id (DISPID_IHTMLEMBEDELEMENT_HIDDEN)] HRESULT hidden ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLEMBEDELEMENT_PALETTE)] HRESULT palette ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLEMBEDELEMENT_PLUGINSPAGE)] HRESULT pluginspage ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLEMBEDELEMENT_SRC)] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLEMBEDELEMENT_SRC)] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLEMBEDELEMENT_UNITS)] HRESULT units ([in] BSTR v);
    [propget, id (DISPID_IHTMLEMBEDELEMENT_UNITS)] HRESULT units ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLEMBEDELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLEMBEDELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLEMBEDELEMENT_WIDTH)] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLEMBEDELEMENT_WIDTH)] HRESULT width ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLEMBEDELEMENT_HEIGHT)] HRESULT height ([in] VARIANT v);
    [propget, id (DISPID_IHTMLEMBEDELEMENT_HEIGHT)] HRESULT height ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (30510493-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLEmbedElement2 : IDispatch {
    [propput, id (DISPID_IHTMLEMBEDELEMENT2_IE8_SRC)] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLEMBEDELEMENT2_IE8_SRC)] HRESULT src ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLEMBEDELEMENT2_IE8_PLUGINSPAGE)] HRESULT pluginspage ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f52e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLEmbed {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLEMBEDELEMENT_HIDDEN)] void hidden (BSTR v);
    [propget, id (DISPID_IHTMLEMBEDELEMENT_HIDDEN)] BSTR hidden ();
    [propget, id (DISPID_IHTMLEMBEDELEMENT_PALETTE)] BSTR palette ();
    [propget, id (DISPID_IHTMLEMBEDELEMENT_PLUGINSPAGE)] BSTR pluginspage ();
    [propput, id (DISPID_IHTMLEMBEDELEMENT_SRC)] void src (BSTR v);
    [propget, id (DISPID_IHTMLEMBEDELEMENT_SRC)] BSTR src ();
    [propput, id (DISPID_IHTMLEMBEDELEMENT_UNITS)] void units (BSTR v);
    [propget, id (DISPID_IHTMLEMBEDELEMENT_UNITS)] BSTR units ();
    [propput, id (DISPID_IHTMLEMBEDELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLEMBEDELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propput, id (DISPID_IHTMLEMBEDELEMENT_WIDTH)] void width (VARIANT v);
    [propget, id (DISPID_IHTMLEMBEDELEMENT_WIDTH)] VARIANT width ();
    [propput, id (DISPID_IHTMLEMBEDELEMENT_HEIGHT)] void height (VARIANT v);
    [propget, id (DISPID_IHTMLEMBEDELEMENT_HEIGHT)] VARIANT height ();
    [propput, id (DISPID_IHTMLEMBEDELEMENT2_IE8_SRC)] void ie8_src (BSTR v);
    [propget, id (DISPID_IHTMLEMBEDELEMENT2_IE8_SRC)] BSTR ie8_src ();
    [propget, id (DISPID_IHTMLEMBEDELEMENT2_IE8_PLUGINSPAGE)] BSTR ie8_pluginspage ();
    [id (DISPID_IGETSVGDOCUMENT_GETSVGDOCUMENT)] IDispatch *getSVGDocument ();
  };
  [noncreatable, uuid (3050f25d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLEmbed {
    [default] dispinterface DispHTMLEmbed;
    [source, default] dispinterface HTMLControlElementEvents;
    [source] dispinterface HTMLControlElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLEmbedElement;
    interface IHTMLEmbedElement2;
    interface IGetSVGDocument;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CPluginSite;")
  [hidden, uuid (3050f61e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLMapEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f3ba-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLMapEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
  };
  [odl, oleautomation, dual, uuid (3050f383-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAreasCollection : IDispatch {
    [propput, id (DISPID_IHTMLAREASCOLLECTION_LENGTH)] HRESULT length ([in] long v);
    [propget, id (DISPID_IHTMLAREASCOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLAREASCOLLECTION__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLAREASCOLLECTION_ITEM)] HRESULT item ([optional, in] VARIANT name,[optional, in] VARIANT index,[retval, out] IDispatch **pdisp);
    [id (DISPID_IHTMLAREASCOLLECTION_TAGS)] HRESULT tags ([in] VARIANT tagName,[retval, out] IDispatch **pdisp);
    [id (DISPID_IHTMLAREASCOLLECTION_ADD)] HRESULT add ([in] IHTMLElement *element,[optional, in] VARIANT before);
    [id (DISPID_IHTMLAREASCOLLECTION_REMOVE)] HRESULT remove ([defaultvalue (-1), in] long index);
  };
  [odl, oleautomation, dual, uuid (3050f5ec-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAreasCollection2 : IDispatch {
    [id (DISPID_IHTMLAREASCOLLECTION2_URNS)] HRESULT urns ([in] VARIANT urn,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (3050f837-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAreasCollection3 : IDispatch {
    [id (DISPID_IHTMLAREASCOLLECTION3_NAMEDITEM)] HRESULT namedItem ([in] BSTR name,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (30510492-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAreasCollection4 : IDispatch {
    [propget, id (DISPID_IHTMLAREASCOLLECTION4_IE8_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLAREASCOLLECTION4_IE8_ITEM)] HRESULT item ([in] long index,[retval, out] IHTMLElement2 **pNode);
    [id (DISPID_IHTMLAREASCOLLECTION4_IE8_NAMEDITEM)] HRESULT namedItem ([in] BSTR name,[retval, out] IHTMLElement2 **pNode);
  };
  [odl, oleautomation, dual, uuid (3050f266-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMapElement : IDispatch {
    [propget, id (DISPID_IHTMLMAPELEMENT_AREAS)] HRESULT areas ([retval, out] IHTMLAreasCollection **p);
    [propput, id (DISPID_IHTMLMAPELEMENT_NAME)] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLMAPELEMENT_NAME)] HRESULT name ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f56a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLAreasCollection {
    properties:
    methods:
    [propput, id (DISPID_IHTMLAREASCOLLECTION_LENGTH)] void length (long v);
    [propget, id (DISPID_IHTMLAREASCOLLECTION_LENGTH)] long length ();
    [propget, id (DISPID_IHTMLAREASCOLLECTION__NEWENUM), hidden, restricted] IUnknown *_newEnum ();
    [id (DISPID_IHTMLAREASCOLLECTION_ITEM)] IDispatch *item ([optional, in] VARIANT name,[optional, in] VARIANT index);
    [id (DISPID_IHTMLAREASCOLLECTION_TAGS)] IDispatch *tags ([in] VARIANT tagName);
    [id (DISPID_IHTMLAREASCOLLECTION_ADD)] void add ([in] IHTMLElement *element,[optional, in] VARIANT before);
    [id (DISPID_IHTMLAREASCOLLECTION_REMOVE)] void remove ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLAREASCOLLECTION2_URNS)] IDispatch *urns ([in] VARIANT urn);
    [id (DISPID_IHTMLAREASCOLLECTION3_NAMEDITEM)] IDispatch *namedItem ([in] BSTR name);
    [propget, id (DISPID_IHTMLAREASCOLLECTION4_IE8_LENGTH)] long ie8_length ();
    [id (DISPID_IHTMLAREASCOLLECTION4_IE8_ITEM)] IHTMLElement2 *ie8_item ([in] long index);
    [id (DISPID_IHTMLAREASCOLLECTION4_IE8_NAMEDITEM)] IHTMLElement2 *ie8_namedItem ([in] BSTR name);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f4ca-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLAreasCollection {
    [default] dispinterface DispHTMLAreasCollection;
    interface IHTMLAreasCollection;
    interface IHTMLAreasCollection2;
    interface IHTMLAreasCollection3;
    interface IHTMLAreasCollection4;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CAreasCollection;")
  [hidden, uuid (3050f526-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLMapElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propget, id (DISPID_IHTMLMAPELEMENT_AREAS)] IHTMLAreasCollection *areas ();
    [propput, id (DISPID_IHTMLMAPELEMENT_NAME)] void name (BSTR v);
    [propget, id (DISPID_IHTMLMAPELEMENT_NAME)] BSTR name ();
  };
  [noncreatable, uuid (3050f271-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLMapElement {
    [default] dispinterface DispHTMLMapElement;
    [source, default] dispinterface HTMLMapEvents;
    [source] dispinterface HTMLMapEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLMapElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMapElement;")
  [hidden, uuid (3050f611-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLAreaEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f366-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLAreaEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
  };
  [odl, oleautomation, dual, uuid (3050f265-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAreaElement : IDispatch {
    [propput, id (DISPID_IHTMLAREAELEMENT_SHAPE)] HRESULT shape ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_SHAPE)] HRESULT shape ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLAREAELEMENT_COORDS)] HRESULT coords ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_COORDS)] HRESULT coords ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLAREAELEMENT_HREF)] HRESULT href ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_HREF)] HRESULT href ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLAREAELEMENT_TARGET)] HRESULT target ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_TARGET)] HRESULT target ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLAREAELEMENT_ALT)] HRESULT alt ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_ALT)] HRESULT alt ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLAREAELEMENT_NOHREF)] HRESULT noHref ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLAREAELEMENT_NOHREF)] HRESULT noHref ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLAREAELEMENT_HOST)] HRESULT host ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_HOST)] HRESULT host ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLAREAELEMENT_HOSTNAME)] HRESULT hostname ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_HOSTNAME)] HRESULT hostname ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLAREAELEMENT_PATHNAME)] HRESULT pathname ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_PATHNAME)] HRESULT pathname ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLAREAELEMENT_PORT)] HRESULT port ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_PORT)] HRESULT port ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLAREAELEMENT_PROTOCOL)] HRESULT protocol ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_PROTOCOL)] HRESULT protocol ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLAREAELEMENT_SEARCH)] HRESULT search ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_SEARCH)] HRESULT search ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLAREAELEMENT_HASH)] HRESULT hash ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_HASH)] HRESULT hash ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLAREAELEMENT_ONBLUR), displaybind, bindable] HRESULT onblur ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAREAELEMENT_ONBLUR), displaybind, bindable] HRESULT onblur ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLAREAELEMENT_ONFOCUS), displaybind, bindable] HRESULT onfocus ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAREAELEMENT_ONFOCUS), displaybind, bindable] HRESULT onfocus ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLAREAELEMENT_TABINDEX), displaybind, bindable] HRESULT tabIndex ([in] short v);
    [propget, id (DISPID_IHTMLAREAELEMENT_TABINDEX), displaybind, bindable] HRESULT tabIndex ([retval, out] short *p);
    [id (DISPID_IHTMLAREAELEMENT_FOCUS)] HRESULT focus ();
    [id (DISPID_IHTMLAREAELEMENT_BLUR)] HRESULT blur ();
  };
  [odl, oleautomation, dual, uuid (3051041f-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAreaElement2 : IDispatch {
    [propput, id (DISPID_IHTMLAREAELEMENT2_IE8_SHAPE)] HRESULT shape ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT2_IE8_SHAPE)] HRESULT shape ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLAREAELEMENT2_IE8_COORDS)] HRESULT coords ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT2_IE8_COORDS)] HRESULT coords ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLAREAELEMENT2_IE8_HREF)] HRESULT href ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT2_IE8_HREF)] HRESULT href ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f503-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLAreaElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLAREAELEMENT_SHAPE)] void shape (BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_SHAPE)] BSTR shape ();
    [propput, id (DISPID_IHTMLAREAELEMENT_COORDS)] void coords (BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_COORDS)] BSTR coords ();
    [propput, id (DISPID_IHTMLAREAELEMENT_HREF)] void href (BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_HREF)] BSTR href ();
    [propput, id (DISPID_IHTMLAREAELEMENT_TARGET)] void target (BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_TARGET)] BSTR target ();
    [propput, id (DISPID_IHTMLAREAELEMENT_ALT)] void alt (BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_ALT)] BSTR alt ();
    [propput, id (DISPID_IHTMLAREAELEMENT_NOHREF)] void noHref (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLAREAELEMENT_NOHREF)] VARIANT_BOOL noHref ();
    [propput, id (DISPID_IHTMLAREAELEMENT_HOST)] void host (BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_HOST)] BSTR host ();
    [propput, id (DISPID_IHTMLAREAELEMENT_HOSTNAME)] void hostname (BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_HOSTNAME)] BSTR hostname ();
    [propput, id (DISPID_IHTMLAREAELEMENT_PATHNAME)] void pathname (BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_PATHNAME)] BSTR pathname ();
    [propput, id (DISPID_IHTMLAREAELEMENT_PORT)] void port (BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_PORT)] BSTR port ();
    [propput, id (DISPID_IHTMLAREAELEMENT_PROTOCOL)] void protocol (BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_PROTOCOL)] BSTR protocol ();
    [propput, id (DISPID_IHTMLAREAELEMENT_SEARCH)] void search (BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_SEARCH)] BSTR search ();
    [propput, id (DISPID_IHTMLAREAELEMENT_HASH)] void hash (BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT_HASH)] BSTR hash ();
    [propput, id (DISPID_IHTMLAREAELEMENT2_IE8_SHAPE)] void ie8_shape (BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT2_IE8_SHAPE)] BSTR ie8_shape ();
    [propput, id (DISPID_IHTMLAREAELEMENT2_IE8_COORDS)] void ie8_coords (BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT2_IE8_COORDS)] BSTR ie8_coords ();
    [propput, id (DISPID_IHTMLAREAELEMENT2_IE8_HREF)] void ie8_href (BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT2_IE8_HREF)] BSTR ie8_href ();
  };
  [noncreatable, uuid (3050f283-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLAreaElement {
    [default] dispinterface DispHTMLAreaElement;
    [source, default] dispinterface HTMLAreaEvents;
    [source] dispinterface HTMLAreaEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLAreaElement;
    interface IHTMLAreaElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CAreaElement;")
  typedef enum _htmlCaptionAlign {
    htmlCaptionAlignNotSet = 0,
    htmlCaptionAlignLeft = 1,
    htmlCaptionAlignCenter = 2,
    htmlCaptionAlignRight = 3,
    htmlCaptionAlignJustify = 4,
    htmlCaptionAlignTop = 5,
    htmlCaptionAlignBottom = 6,
    htmlCaptionAlign_Max = 0x7FFFFFFF
  } htmlCaptionAlign;

  typedef enum _htmlCaptionVAlign {
    htmlCaptionVAlignNotSet = 0,
    htmlCaptionVAlignTop = 1,
    htmlCaptionVAlignBottom = 2,
    htmlCaptionVAlign_Max = 0x7FFFFFFF
  } htmlCaptionVAlign;
  [odl, oleautomation, dual, uuid (3050f2eb-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableCaption : IDispatch {
    [propput, id (DISPID_IHTMLTABLECAPTION_ALIGN)] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECAPTION_ALIGN)] HRESULT align ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECAPTION_VALIGN)] HRESULT vAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECAPTION_VALIGN)] HRESULT vAlign ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f508-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTableCaption {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLTABLECAPTION_ALIGN)] void align (BSTR v);
    [propget, id (DISPID_IHTMLTABLECAPTION_ALIGN)] BSTR align ();
    [propput, id (DISPID_IHTMLTABLECAPTION_VALIGN)] void vAlign (BSTR v);
    [propget, id (DISPID_IHTMLTABLECAPTION_VALIGN)] BSTR vAlign ();
  };
  [noncreatable, uuid (3050f2ec-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTableCaption {
    [default] dispinterface DispHTMLTableCaption;
    [source, default] dispinterface HTMLTextContainerEvents;
    [source] dispinterface HTMLTextContainerEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLTableCaption;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTableCaption;")
  [odl, oleautomation, dual, uuid (3050f20c-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLCommentElement : IDispatch {
    [propput, id (DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable] HRESULT text ([in] BSTR v);
    [propget, id (DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable] HRESULT text ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable] HRESULT atomic ([in] long v);
    [propget, id (DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable] HRESULT atomic ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (3050f813-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLCommentElement2 : IDispatch {
    [propput, id (DISPID_IHTMLCOMMENTELEMENT2_DATA)] HRESULT data ([in] BSTR v);
    [propget, id (DISPID_IHTMLCOMMENTELEMENT2_DATA)] HRESULT data ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCOMMENTELEMENT2_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLCOMMENTELEMENT2_SUBSTRINGDATA)] HRESULT substringData ([in] long offset,[in] long Count,[retval, out] BSTR *pbstrsubString);
    [id (DISPID_IHTMLCOMMENTELEMENT2_APPENDDATA)] HRESULT appendData ([in] BSTR bstrstring);
    [id (DISPID_IHTMLCOMMENTELEMENT2_INSERTDATA)] HRESULT insertData ([in] long offset,[in] BSTR bstrstring);
    [id (DISPID_IHTMLCOMMENTELEMENT2_DELETEDATA)] HRESULT deleteData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLCOMMENTELEMENT2_REPLACEDATA)] HRESULT replaceData ([in] long offset,[in] long Count,[in] BSTR bstrstring);
  };
  [odl, oleautomation, dual, uuid (3051073f-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLCommentElement3 : IDispatch {
    [id (DISPID_IHTMLCOMMENTELEMENT3_IE9_SUBSTRINGDATA)] HRESULT substringData ([in] long offset,[in] long Count,[retval, out] BSTR *pbstrsubString);
    [id (DISPID_IHTMLCOMMENTELEMENT3_IE9_INSERTDATA)] HRESULT insertData ([in] long offset,[in] BSTR bstrstring);
    [id (DISPID_IHTMLCOMMENTELEMENT3_IE9_DELETEDATA)] HRESULT deleteData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLCOMMENTELEMENT3_IE9_REPLACEDATA)] HRESULT replaceData ([in] long offset,[in] long Count,[in] BSTR bstrstring);
  };
  [hidden, uuid (3050f50a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLCommentElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable] void text (BSTR v);
    [propget, id (DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable] BSTR text ();
    [propput, id (DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable] void atomic (long v);
    [propget, id (DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable] long atomic ();
    [propput, id (DISPID_IHTMLCOMMENTELEMENT2_DATA)] void data (BSTR v);
    [propget, id (DISPID_IHTMLCOMMENTELEMENT2_DATA)] BSTR data ();
    [propget, id (DISPID_IHTMLCOMMENTELEMENT2_LENGTH)] long length ();
    [id (DISPID_IHTMLCOMMENTELEMENT2_SUBSTRINGDATA)] BSTR substringData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLCOMMENTELEMENT2_APPENDDATA)] void appendData ([in] BSTR bstrstring);
    [id (DISPID_IHTMLCOMMENTELEMENT2_INSERTDATA)] void insertData ([in] long offset,[in] BSTR bstrstring);
    [id (DISPID_IHTMLCOMMENTELEMENT2_DELETEDATA)] void deleteData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLCOMMENTELEMENT2_REPLACEDATA)] void replaceData ([in] long offset,[in] long Count,[in] BSTR bstrstring);
    [id (DISPID_IHTMLCOMMENTELEMENT3_IE9_SUBSTRINGDATA)] BSTR ie9_substringData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLCOMMENTELEMENT3_IE9_INSERTDATA)] void ie9_insertData ([in] long offset,[in] BSTR bstrstring);
    [id (DISPID_IHTMLCOMMENTELEMENT3_IE9_DELETEDATA)] void ie9_deleteData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLCOMMENTELEMENT3_IE9_REPLACEDATA)] void ie9_replaceData ([in] long offset,[in] long Count,[in] BSTR bstrstring);
  };
  [noncreatable, uuid (3050f317-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLCommentElement {
    [default] dispinterface DispHTMLCommentElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLCommentElement;
    interface IHTMLCommentElement2;
    interface IHTMLCommentElement3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CCommentElement;")
  [odl, oleautomation, dual, uuid (3050f20a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLPhraseElement : IDispatch {
  };
  [odl, oleautomation, dual, uuid (3050f824-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLPhraseElement2 : IDispatch {
    [propput, id (DISPID_IHTMLPHRASEELEMENT2_CITE), displaybind, bindable] HRESULT cite ([in] BSTR v);
    [propget, id (DISPID_IHTMLPHRASEELEMENT2_CITE), displaybind, bindable] HRESULT cite ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLPHRASEELEMENT2_DATETIME), displaybind, bindable] HRESULT dateTime ([in] BSTR v);
    [propget, id (DISPID_IHTMLPHRASEELEMENT2_DATETIME), displaybind, bindable] HRESULT dateTime ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3051043d-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLPhraseElement3 : IDispatch {
    [propput, id (DISPID_IHTMLPHRASEELEMENT3_IE8_CITE)] HRESULT cite ([in] BSTR v);
    [propget, id (DISPID_IHTMLPHRASEELEMENT3_IE8_CITE)] HRESULT cite ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f3f3-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSpanElement : IDispatch {
  };
  [hidden, uuid (3050f52d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLPhraseElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLPHRASEELEMENT2_CITE), displaybind, bindable] void cite (BSTR v);
    [propget, id (DISPID_IHTMLPHRASEELEMENT2_CITE), displaybind, bindable] BSTR cite ();
    [propput, id (DISPID_IHTMLPHRASEELEMENT2_DATETIME), displaybind, bindable] void dateTime (BSTR v);
    [propget, id (DISPID_IHTMLPHRASEELEMENT2_DATETIME), displaybind, bindable] BSTR dateTime ();
    [propput, id (DISPID_IHTMLPHRASEELEMENT3_IE8_CITE)] void ie8_cite (BSTR v);
    [propget, id (DISPID_IHTMLPHRASEELEMENT3_IE8_CITE)] BSTR ie8_cite ();
  };
  [noncreatable, uuid (3050f26e-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLPhraseElement {
    [default] dispinterface DispHTMLPhraseElement;
    [source, default] dispinterface HTMLElementEvents;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLPhraseElement;
    interface IHTMLPhraseElement2;
    interface IHTMLPhraseElement3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CPhraseElement;")
  [hidden, uuid (3050f548-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLSpanElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
  };
  [noncreatable, uuid (3050f3f5-98b4-11cf-bb82-00aa00bdce0b)] coclass HTMLSpanElement {
    [default] dispinterface DispHTMLSpanElement;
    [source, default] dispinterface HTMLElementEvents;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLPhraseElement;
    interface IHTMLSpanElement;
    interface IHTMLControlElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSpanElement;")
  [hidden, uuid (3050f623-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLTableEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f407-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLTableEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
  };
  typedef enum _htmlFrame {
    htmlFrameNotSet = 0,
    htmlFramevoid = 1,
    htmlFrameabove = 2,
    htmlFramebelow = 3,
    htmlFramehsides = 4,
    htmlFramelhs = 5,
    htmlFramerhs = 6,
    htmlFramevsides = 7,
    htmlFramebox = 8,
    htmlFrameborder = 9,
    htmlFrame_Max = 0x7FFFFFFF
  } htmlFrame;

  typedef enum _htmlRules {
    htmlRulesNotSet = 0,
    htmlRulesnone = 1,
    htmlRulesgroups = 2,
    htmlRulesrows = 3,
    htmlRulescols = 4,
    htmlRulesall = 5,
    htmlRules_Max = 0x7FFFFFFF
  } htmlRules;

  typedef enum _htmlCellAlign {
    htmlCellAlignNotSet = 0,
    htmlCellAlignLeft = 1,
    htmlCellAlignCenter = 2,
    htmlCellAlignRight = 3,
    htmlCellAlignMiddle = htmlCellAlignCenter,
    htmlCellAlign_Max = 0x7FFFFFFF
  } htmlCellAlign;

  typedef enum _htmlCellVAlign {
    htmlCellVAlignNotSet = 0,
    htmlCellVAlignTop = 1,
    htmlCellVAlignMiddle = 2,
    htmlCellVAlignBottom = 3,
    htmlCellVAlignBaseline = 4,
    htmlCellVAlignCenter = htmlCellVAlignMiddle,
    htmlCellVAlign_Max = 0x7FFFFFFF
  } htmlCellVAlign;
  interface IHTMLTableSection;
  [odl, oleautomation, dual, uuid (3050f21e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTable : IDispatch {
    [propput, id (DISPID_IHTMLTABLE_COLS)] HRESULT cols ([in] long v);
    [propget, id (DISPID_IHTMLTABLE_COLS)] HRESULT cols ([retval, out] long *p);
    [propput, id (DISPID_IHTMLTABLE_BORDER)] HRESULT border ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_BORDER)] HRESULT border ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLE_FRAME)] HRESULT frame ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLE_FRAME)] HRESULT frame ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLE_RULES)] HRESULT rules ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLE_RULES)] HRESULT rules ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLE_CELLSPACING)] HRESULT cellSpacing ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_CELLSPACING)] HRESULT cellSpacing ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLE_CELLPADDING)] HRESULT cellPadding ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_CELLPADDING)] HRESULT cellPadding ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLE_BACKGROUND)] HRESULT background ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLE_BACKGROUND)] HRESULT background ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLE_BGCOLOR)] HRESULT bgColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_BGCOLOR)] HRESULT bgColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLE_BORDERCOLOR)] HRESULT borderColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_BORDERCOLOR)] HRESULT borderColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLE_BORDERCOLORLIGHT)] HRESULT borderColorLight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_BORDERCOLORLIGHT)] HRESULT borderColorLight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLE_BORDERCOLORDARK)] HRESULT borderColorDark ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_BORDERCOLORDARK)] HRESULT borderColorDark ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLE_ALIGN)] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLE_ALIGN)] HRESULT align ([retval, out] BSTR *p);
    [id (DISPID_IHTMLTABLE_REFRESH)] HRESULT refresh ();
    [propget, id (DISPID_IHTMLTABLE_ROWS)] HRESULT rows ([retval, out] IHTMLElementCollection **p);
    [propput, id (DISPID_IHTMLTABLE_WIDTH)] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_WIDTH)] HRESULT width ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLE_HEIGHT)] HRESULT height ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_HEIGHT)] HRESULT height ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLE_DATAPAGESIZE)] HRESULT dataPageSize ([in] long v);
    [propget, id (DISPID_IHTMLTABLE_DATAPAGESIZE)] HRESULT dataPageSize ([retval, out] long *p);
    [id (DISPID_IHTMLTABLE_NEXTPAGE)] HRESULT nextPage ();
    [id (DISPID_IHTMLTABLE_PREVIOUSPAGE)] HRESULT previousPage ();
    [propget, id (DISPID_IHTMLTABLE_THEAD)] HRESULT tHead ([retval, out] IHTMLTableSection **p);
    [propget, id (DISPID_IHTMLTABLE_TFOOT)] HRESULT tFoot ([retval, out] IHTMLTableSection **p);
    [propget, id (DISPID_IHTMLTABLE_TBODIES)] HRESULT tBodies ([retval, out] IHTMLElementCollection **p);
    [propget, id (DISPID_IHTMLTABLE_CAPTION)] HRESULT caption ([retval, out] IHTMLTableCaption **p);
    [id (DISPID_IHTMLTABLE_CREATETHEAD)] HRESULT createTHead ([retval, out] IDispatch **head);
    [id (DISPID_IHTMLTABLE_DELETETHEAD)] HRESULT deleteTHead ();
    [id (DISPID_IHTMLTABLE_CREATETFOOT)] HRESULT createTFoot ([retval, out] IDispatch **foot);
    [id (DISPID_IHTMLTABLE_DELETETFOOT)] HRESULT deleteTFoot ();
    [id (DISPID_IHTMLTABLE_CREATECAPTION)] HRESULT createCaption ([retval, out] IHTMLTableCaption **caption);
    [id (DISPID_IHTMLTABLE_DELETECAPTION)] HRESULT deleteCaption ();
    [id (DISPID_IHTMLTABLE_INSERTROW)] HRESULT insertRow ([defaultvalue (-1), in] long index,[defaultvalue (0), retval, out] IDispatch **row);
    [id (DISPID_IHTMLTABLE_DELETEROW)] HRESULT deleteRow ([defaultvalue (-1), in] long index);
    [propget, id (DISPID_IHTMLTABLE_READYSTATE)] HRESULT readyState ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLE_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (3050f4ad-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTable2 : IDispatch {
    [id (DISPID_IHTMLTABLE2_FIRSTPAGE)] HRESULT firstPage ();
    [id (DISPID_IHTMLTABLE2_LASTPAGE)] HRESULT lastPage ();
    [propget, id (DISPID_IHTMLTABLE2_CELLS)] HRESULT cells ([retval, out] IHTMLElementCollection **p);
    [id (DISPID_IHTMLTABLE2_MOVEROW)] HRESULT moveRow ([defaultvalue (-1), in] long indexFrom,[defaultvalue (-1), in] long indexTo,[defaultvalue (0), retval, out] IDispatch **row);
  };
  [odl, oleautomation, dual, uuid (3050f829-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTable3 : IDispatch {
    [propput, id (DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable] HRESULT summary ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable] HRESULT summary ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305106c2-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTable4 : IDispatch {
    [propputref, id (DISPID_IHTMLTABLE4_IE9_THEAD)] HRESULT tHead ([in] IHTMLTableSection *v);
    [propget, id (DISPID_IHTMLTABLE4_IE9_THEAD)] HRESULT tHead ([retval, out] IHTMLTableSection **p);
    [propputref, id (DISPID_IHTMLTABLE4_IE9_TFOOT)] HRESULT tFoot ([in] IHTMLTableSection *v);
    [propget, id (DISPID_IHTMLTABLE4_IE9_TFOOT)] HRESULT tFoot ([retval, out] IHTMLTableSection **p);
    [propputref, id (DISPID_IHTMLTABLE4_IE9_CAPTION)] HRESULT caption ([in] IHTMLTableCaption *v);
    [propget, id (DISPID_IHTMLTABLE4_IE9_CAPTION)] HRESULT caption ([retval, out] IHTMLTableCaption **p);
    [id (DISPID_IHTMLTABLE4_IE9_INSERTROW)] HRESULT insertRow ([defaultvalue (-1), in] long index,[defaultvalue (0), retval, out] IDispatch **row);
    [id (DISPID_IHTMLTABLE4_IE9_DELETEROW)] HRESULT deleteRow ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLE4_CREATETBODY)] HRESULT createTBody ([retval, out] IHTMLTableSection **tbody);
  };
  [odl, oleautomation, dual, uuid (3050f23a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableCol : IDispatch {
    [propput, id (DISPID_IHTMLTABLECOL_SPAN)] HRESULT span ([in] long v);
    [propget, id (DISPID_IHTMLTABLECOL_SPAN)] HRESULT span ([retval, out] long *p);
    [propput, id (DISPID_IHTMLTABLECOL_WIDTH)] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLECOL_WIDTH)] HRESULT width ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLECOL_ALIGN)] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL_ALIGN)] HRESULT align ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECOL_VALIGN)] HRESULT vAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL_VALIGN)] HRESULT vAlign ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f82a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableCol2 : IDispatch {
    [propput, id (DISPID_IHTMLTABLECOL2_CH), displaybind, bindable] HRESULT ch ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL2_CH), displaybind, bindable] HRESULT ch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECOL2_CHOFF), displaybind, bindable] HRESULT chOff ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL2_CHOFF), displaybind, bindable] HRESULT chOff ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305106c4-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableCol3 : IDispatch {
    [propput, id (DISPID_IHTMLTABLECOL3_IE9_CH), displaybind, bindable] HRESULT ch ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL3_IE9_CH), displaybind, bindable] HRESULT ch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECOL3_IE9_CHOFF), displaybind, bindable] HRESULT chOff ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL3_IE9_CHOFF), displaybind, bindable] HRESULT chOff ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f23b-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableSection : IDispatch {
    [propput, id (DISPID_IHTMLTABLESECTION_ALIGN)] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION_ALIGN)] HRESULT align ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLESECTION_VALIGN)] HRESULT vAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION_VALIGN)] HRESULT vAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLESECTION_BGCOLOR)] HRESULT bgColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLESECTION_BGCOLOR)] HRESULT bgColor ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLTABLESECTION_ROWS)] HRESULT rows ([retval, out] IHTMLElementCollection **p);
    [id (DISPID_IHTMLTABLESECTION_INSERTROW)] HRESULT insertRow ([defaultvalue (-1), in] long index,[defaultvalue (0), retval, out] IDispatch **row);
    [id (DISPID_IHTMLTABLESECTION_DELETEROW)] HRESULT deleteRow ([defaultvalue (-1), in] long index);
  };
  [odl, oleautomation, dual, uuid (3050f5c7-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableSection2 : IDispatch {
    [id (DISPID_IHTMLTABLESECTION2_MOVEROW)] HRESULT moveRow ([defaultvalue (-1), in] long indexFrom,[defaultvalue (-1), in] long indexTo,[defaultvalue (0), retval, out] IDispatch **row);
  };
  [odl, oleautomation, dual, uuid (3050f82b-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableSection3 : IDispatch {
    [propput, id (DISPID_IHTMLTABLESECTION3_CH), displaybind, bindable] HRESULT ch ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION3_CH), displaybind, bindable] HRESULT ch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLESECTION3_CHOFF), displaybind, bindable] HRESULT chOff ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION3_CHOFF), displaybind, bindable] HRESULT chOff ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305106c5-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableSection4 : IDispatch {
    [propput, id (DISPID_IHTMLTABLESECTION4_IE9_CH), displaybind, bindable] HRESULT ch ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION4_IE9_CH), displaybind, bindable] HRESULT ch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLESECTION4_IE9_CHOFF), displaybind, bindable] HRESULT chOff ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION4_IE9_CHOFF), displaybind, bindable] HRESULT chOff ([retval, out] BSTR *p);
    [id (DISPID_IHTMLTABLESECTION4_IE9_INSERTROW)] HRESULT insertRow ([defaultvalue (-1), in] long index,[defaultvalue (0), retval, out] IDispatch **row);
    [id (DISPID_IHTMLTABLESECTION4_IE9_DELETEROW)] HRESULT deleteRow ([defaultvalue (-1), in] long index);
  };
  [odl, oleautomation, dual, uuid (3050f23c-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableRow : IDispatch {
    [propput, id (DISPID_IHTMLTABLEROW_ALIGN)] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW_ALIGN)] HRESULT align ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLEROW_VALIGN)] HRESULT vAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW_VALIGN)] HRESULT vAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLEROW_BGCOLOR)] HRESULT bgColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLEROW_BGCOLOR)] HRESULT bgColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLEROW_BORDERCOLOR)] HRESULT borderColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLEROW_BORDERCOLOR)] HRESULT borderColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)] HRESULT borderColorLight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)] HRESULT borderColorLight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLEROW_BORDERCOLORDARK)] HRESULT borderColorDark ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLEROW_BORDERCOLORDARK)] HRESULT borderColorDark ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLTABLEROW_ROWINDEX)] HRESULT rowIndex ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTABLEROW_SECTIONROWINDEX)] HRESULT sectionRowIndex ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTABLEROW_CELLS)] HRESULT cells ([retval, out] IHTMLElementCollection **p);
    [id (DISPID_IHTMLTABLEROW_INSERTCELL)] HRESULT insertCell ([defaultvalue (-1), in] long index,[defaultvalue (0), retval, out] IDispatch **row);
    [id (DISPID_IHTMLTABLEROW_DELETECELL)] HRESULT deleteCell ([defaultvalue (-1), in] long index);
  };
  [odl, oleautomation, dual, uuid (3050f4a1-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableRow2 : IDispatch {
    [propput, id (DISPID_IHTMLTABLEROW2_HEIGHT)] HRESULT height ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLEROW2_HEIGHT)] HRESULT height ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (3050f82c-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableRow3 : IDispatch {
    [propput, id (DISPID_IHTMLTABLEROW3_CH), displaybind, bindable] HRESULT ch ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW3_CH), displaybind, bindable] HRESULT ch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLEROW3_CHOFF), displaybind, bindable] HRESULT chOff ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW3_CHOFF), displaybind, bindable] HRESULT chOff ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305106c6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableRow4 : IDispatch {
    [propput, id (DISPID_IHTMLTABLEROW4_IE9_CH), displaybind, bindable] HRESULT ch ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW4_IE9_CH), displaybind, bindable] HRESULT ch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLEROW4_IE9_CHOFF), displaybind, bindable] HRESULT chOff ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW4_IE9_CHOFF), displaybind, bindable] HRESULT chOff ([retval, out] BSTR *p);
    [id (DISPID_IHTMLTABLEROW4_IE9_INSERTCELL)] HRESULT insertCell ([defaultvalue (-1), in] long index,[defaultvalue (0), retval, out] IDispatch **row);
    [id (DISPID_IHTMLTABLEROW4_IE9_DELETECELL)] HRESULT deleteCell ([defaultvalue (-1), in] long index);
  };
  [odl, oleautomation, dual, uuid (3050f413-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableRowMetrics : IDispatch {
    [propget, id (DISPID_IHTMLTABLEROWMETRICS_CLIENTHEIGHT), displaybind, bindable] HRESULT clientHeight ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTABLEROWMETRICS_CLIENTWIDTH), displaybind, bindable] HRESULT clientWidth ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTABLEROWMETRICS_CLIENTTOP), displaybind, bindable] HRESULT clientTop ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTABLEROWMETRICS_CLIENTLEFT), displaybind, bindable] HRESULT clientLeft ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (3050f23d-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableCell : IDispatch {
    [propput, id (DISPID_IHTMLTABLECELL_ROWSPAN)] HRESULT rowSpan ([in] long v);
    [propget, id (DISPID_IHTMLTABLECELL_ROWSPAN)] HRESULT rowSpan ([retval, out] long *p);
    [propput, id (DISPID_IHTMLTABLECELL_COLSPAN)] HRESULT colSpan ([in] long v);
    [propget, id (DISPID_IHTMLTABLECELL_COLSPAN)] HRESULT colSpan ([retval, out] long *p);
    [propput, id (DISPID_IHTMLTABLECELL_ALIGN)] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL_ALIGN)] HRESULT align ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECELL_VALIGN)] HRESULT vAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL_VALIGN)] HRESULT vAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECELL_BGCOLOR)] HRESULT bgColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLECELL_BGCOLOR)] HRESULT bgColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLECELL_NOWRAP)] HRESULT noWrap ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLTABLECELL_NOWRAP)] HRESULT noWrap ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLTABLECELL_BACKGROUND)] HRESULT background ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL_BACKGROUND)] HRESULT background ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECELL_BORDERCOLOR)] HRESULT borderColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLECELL_BORDERCOLOR)] HRESULT borderColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLECELL_BORDERCOLORLIGHT)] HRESULT borderColorLight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLECELL_BORDERCOLORLIGHT)] HRESULT borderColorLight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLECELL_BORDERCOLORDARK)] HRESULT borderColorDark ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLECELL_BORDERCOLORDARK)] HRESULT borderColorDark ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLECELL_WIDTH)] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLECELL_WIDTH)] HRESULT width ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLECELL_HEIGHT)] HRESULT height ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLECELL_HEIGHT)] HRESULT height ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLTABLECELL_CELLINDEX)] HRESULT cellIndex ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (3050f82d-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableCell2 : IDispatch {
    [propput, id (DISPID_IHTMLTABLECELL2_ABBR), displaybind, bindable] HRESULT abbr ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_ABBR), displaybind, bindable] HRESULT abbr ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECELL2_AXIS), displaybind, bindable] HRESULT axis ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_AXIS), displaybind, bindable] HRESULT axis ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECELL2_CH), displaybind, bindable] HRESULT ch ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_CH), displaybind, bindable] HRESULT ch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECELL2_CHOFF), displaybind, bindable] HRESULT chOff ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_CHOFF), displaybind, bindable] HRESULT chOff ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECELL2_HEADERS), displaybind, bindable] HRESULT headers ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_HEADERS), displaybind, bindable] HRESULT headers ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECELL2_SCOPE), displaybind, bindable] HRESULT scope ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_SCOPE), displaybind, bindable] HRESULT scope ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305106c7-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableCell3 : IDispatch {
    [propput, id (DISPID_IHTMLTABLECELL3_IE9_CH), displaybind, bindable] HRESULT ch ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL3_IE9_CH), displaybind, bindable] HRESULT ch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECELL3_IE9_CHOFF), displaybind, bindable] HRESULT chOff ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL3_IE9_CHOFF), displaybind, bindable] HRESULT chOff ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f532-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTable {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLTABLE_COLS)] void cols (long v);
    [propget, id (DISPID_IHTMLTABLE_COLS)] long cols ();
    [propput, id (DISPID_IHTMLTABLE_BORDER)] void border (VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_BORDER)] VARIANT border ();
    [propput, id (DISPID_IHTMLTABLE_FRAME)] void frame (BSTR v);
    [propget, id (DISPID_IHTMLTABLE_FRAME)] BSTR frame ();
    [propput, id (DISPID_IHTMLTABLE_RULES)] void rules (BSTR v);
    [propget, id (DISPID_IHTMLTABLE_RULES)] BSTR rules ();
    [propput, id (DISPID_IHTMLTABLE_CELLSPACING)] void cellSpacing (VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_CELLSPACING)] VARIANT cellSpacing ();
    [propput, id (DISPID_IHTMLTABLE_CELLPADDING)] void cellPadding (VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_CELLPADDING)] VARIANT cellPadding ();
    [propput, id (DISPID_IHTMLTABLE_BACKGROUND)] void background (BSTR v);
    [propget, id (DISPID_IHTMLTABLE_BACKGROUND)] BSTR background ();
    [propput, id (DISPID_IHTMLTABLE_BGCOLOR)] void bgColor (VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_BGCOLOR)] VARIANT bgColor ();
    [propput, id (DISPID_IHTMLTABLE_BORDERCOLOR)] void borderColor (VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_BORDERCOLOR)] VARIANT borderColor ();
    [propput, id (DISPID_IHTMLTABLE_BORDERCOLORLIGHT)] void borderColorLight (VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_BORDERCOLORLIGHT)] VARIANT borderColorLight ();
    [propput, id (DISPID_IHTMLTABLE_BORDERCOLORDARK)] void borderColorDark (VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_BORDERCOLORDARK)] VARIANT borderColorDark ();
    [propput, id (DISPID_IHTMLTABLE_ALIGN)] void align (BSTR v);
    [propget, id (DISPID_IHTMLTABLE_ALIGN)] BSTR align ();
    [id (DISPID_IHTMLTABLE_REFRESH)] void refresh ();
    [propget, id (DISPID_IHTMLTABLE_ROWS)] IHTMLElementCollection *rows ();
    [propput, id (DISPID_IHTMLTABLE_WIDTH)] void width (VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_WIDTH)] VARIANT width ();
    [propput, id (DISPID_IHTMLTABLE_HEIGHT)] void height (VARIANT v);
    [propget, id (DISPID_IHTMLTABLE_HEIGHT)] VARIANT height ();
    [propput, id (DISPID_IHTMLTABLE_DATAPAGESIZE)] void dataPageSize (long v);
    [propget, id (DISPID_IHTMLTABLE_DATAPAGESIZE)] long dataPageSize ();
    [id (DISPID_IHTMLTABLE_NEXTPAGE)] void nextPage ();
    [id (DISPID_IHTMLTABLE_PREVIOUSPAGE)] void previousPage ();
    [propget, id (DISPID_IHTMLTABLE_THEAD)] IHTMLTableSection *tHead ();
    [propget, id (DISPID_IHTMLTABLE_TFOOT)] IHTMLTableSection *tFoot ();
    [propget, id (DISPID_IHTMLTABLE_TBODIES)] IHTMLElementCollection *tBodies ();
    [propget, id (DISPID_IHTMLTABLE_CAPTION)] IHTMLTableCaption *caption ();
    [id (DISPID_IHTMLTABLE_CREATETHEAD)] IDispatch *createTHead ();
    [id (DISPID_IHTMLTABLE_DELETETHEAD)] void deleteTHead ();
    [id (DISPID_IHTMLTABLE_CREATETFOOT)] IDispatch *createTFoot ();
    [id (DISPID_IHTMLTABLE_DELETETFOOT)] void deleteTFoot ();
    [id (DISPID_IHTMLTABLE_CREATECAPTION)] IHTMLTableCaption *createCaption ();
    [id (DISPID_IHTMLTABLE_DELETECAPTION)] void deleteCaption ();
    [id (DISPID_IHTMLTABLE_INSERTROW)] IDispatch *insertRow ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLE_DELETEROW)] void deleteRow ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLE2_FIRSTPAGE)] void firstPage ();
    [id (DISPID_IHTMLTABLE2_LASTPAGE)] void lastPage ();
    [propget, id (DISPID_IHTMLTABLE2_CELLS)] IHTMLElementCollection *cells ();
    [id (DISPID_IHTMLTABLE2_MOVEROW)] IDispatch *moveRow ([defaultvalue (-1), in] long indexFrom,[defaultvalue (-1), in] long indexTo);
    [propput, id (DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable] void summary (BSTR v);
    [propget, id (DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable] BSTR summary ();
    [propputref, id (DISPID_IHTMLTABLE4_IE9_THEAD)] void ie9_tHead (IHTMLTableSection *v);
    [propget, id (DISPID_IHTMLTABLE4_IE9_THEAD)] IHTMLTableSection *ie9_tHead ();
    [propputref, id (DISPID_IHTMLTABLE4_IE9_TFOOT)] void ie9_tFoot (IHTMLTableSection *v);
    [propget, id (DISPID_IHTMLTABLE4_IE9_TFOOT)] IHTMLTableSection *ie9_tFoot ();
    [propputref, id (DISPID_IHTMLTABLE4_IE9_CAPTION)] void ie9_caption (IHTMLTableCaption *v);
    [propget, id (DISPID_IHTMLTABLE4_IE9_CAPTION)] IHTMLTableCaption *ie9_caption ();
    [id (DISPID_IHTMLTABLE4_IE9_INSERTROW)] IDispatch *ie9_insertRow ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLE4_IE9_DELETEROW)] void ie9_deleteRow ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLE4_CREATETBODY)] IHTMLTableSection *createTBody ();
  };
  [noncreatable, uuid (3050f26b-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTable {
    [default] dispinterface DispHTMLTable;
    [source, default] dispinterface HTMLTableEvents;
    [source] dispinterface HTMLTableEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTable;
    interface IHTMLTable2;
    interface IHTMLTable3;
    interface IHTMLTable4;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTable;")
  [hidden, uuid (3050f533-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTableCol {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLTABLECOL_SPAN)] void span (long v);
    [propget, id (DISPID_IHTMLTABLECOL_SPAN)] long span ();
    [propput, id (DISPID_IHTMLTABLECOL_WIDTH)] void width (VARIANT v);
    [propget, id (DISPID_IHTMLTABLECOL_WIDTH)] VARIANT width ();
    [propput, id (DISPID_IHTMLTABLECOL_ALIGN)] void align (BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL_ALIGN)] BSTR align ();
    [propput, id (DISPID_IHTMLTABLECOL_VALIGN)] void vAlign (BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL_VALIGN)] BSTR vAlign ();
    [propput, id (DISPID_IHTMLTABLECOL2_CH), displaybind, bindable] void ch (BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL2_CH), displaybind, bindable] BSTR ch ();
    [propput, id (DISPID_IHTMLTABLECOL2_CHOFF), displaybind, bindable] void chOff (BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL2_CHOFF), displaybind, bindable] BSTR chOff ();
    [propput, id (DISPID_IHTMLTABLECOL3_IE9_CH), displaybind, bindable] void ie9_ch (BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL3_IE9_CH), displaybind, bindable] BSTR ie9_ch ();
    [propput, id (DISPID_IHTMLTABLECOL3_IE9_CHOFF), displaybind, bindable] void ie9_chOff (BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL3_IE9_CHOFF), displaybind, bindable] BSTR ie9_chOff ();
  };
  [noncreatable, uuid (3050f26c-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTableCol {
    [default] dispinterface DispHTMLTableCol;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLTableCol;
    interface IHTMLTableCol2;
    interface IHTMLTableCol3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTableCol;")
  [hidden, uuid (3050f534-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTableSection {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLTABLESECTION_ALIGN)] void align (BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION_ALIGN)] BSTR align ();
    [propput, id (DISPID_IHTMLTABLESECTION_VALIGN)] void vAlign (BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION_VALIGN)] BSTR vAlign ();
    [propput, id (DISPID_IHTMLTABLESECTION_BGCOLOR)] void bgColor (VARIANT v);
    [propget, id (DISPID_IHTMLTABLESECTION_BGCOLOR)] VARIANT bgColor ();
    [propget, id (DISPID_IHTMLTABLESECTION_ROWS)] IHTMLElementCollection *rows ();
    [id (DISPID_IHTMLTABLESECTION_INSERTROW)] IDispatch *insertRow ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLESECTION_DELETEROW)] void deleteRow ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLESECTION2_MOVEROW)] IDispatch *moveRow ([defaultvalue (-1), in] long indexFrom,[defaultvalue (-1), in] long indexTo);
    [propput, id (DISPID_IHTMLTABLESECTION3_CH), displaybind, bindable] void ch (BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION3_CH), displaybind, bindable] BSTR ch ();
    [propput, id (DISPID_IHTMLTABLESECTION3_CHOFF), displaybind, bindable] void chOff (BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION3_CHOFF), displaybind, bindable] BSTR chOff ();
    [propput, id (DISPID_IHTMLTABLESECTION4_IE9_CH), displaybind, bindable] void ie9_ch (BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION4_IE9_CH), displaybind, bindable] BSTR ie9_ch ();
    [propput, id (DISPID_IHTMLTABLESECTION4_IE9_CHOFF), displaybind, bindable] void ie9_chOff (BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION4_IE9_CHOFF), displaybind, bindable] BSTR ie9_chOff ();
    [id (DISPID_IHTMLTABLESECTION4_IE9_INSERTROW)] IDispatch *ie9_insertRow ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLESECTION4_IE9_DELETEROW)] void ie9_deleteRow ([defaultvalue (-1), in] long index);
  };
  [noncreatable, uuid (3050f2e9-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTableSection {
    [default] dispinterface DispHTMLTableSection;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLTableSection;
    interface IHTMLTableSection2;
    interface IHTMLTableSection3;
    interface IHTMLTableSection4;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTableSection;")
  [hidden, uuid (3050f535-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTableRow {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLTABLEROW_ALIGN)] void align (BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW_ALIGN)] BSTR align ();
    [propput, id (DISPID_IHTMLTABLEROW_VALIGN)] void vAlign (BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW_VALIGN)] BSTR vAlign ();
    [propput, id (DISPID_IHTMLTABLEROW_BGCOLOR)] void bgColor (VARIANT v);
    [propget, id (DISPID_IHTMLTABLEROW_BGCOLOR)] VARIANT bgColor ();
    [propput, id (DISPID_IHTMLTABLEROW_BORDERCOLOR)] void borderColor (VARIANT v);
    [propget, id (DISPID_IHTMLTABLEROW_BORDERCOLOR)] VARIANT borderColor ();
    [propput, id (DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)] void borderColorLight (VARIANT v);
    [propget, id (DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)] VARIANT borderColorLight ();
    [propput, id (DISPID_IHTMLTABLEROW_BORDERCOLORDARK)] void borderColorDark (VARIANT v);
    [propget, id (DISPID_IHTMLTABLEROW_BORDERCOLORDARK)] VARIANT borderColorDark ();
    [propget, id (DISPID_IHTMLTABLEROW_ROWINDEX)] long rowIndex ();
    [propget, id (DISPID_IHTMLTABLEROW_SECTIONROWINDEX)] long sectionRowIndex ();
    [propget, id (DISPID_IHTMLTABLEROW_CELLS)] IHTMLElementCollection *cells ();
    [id (DISPID_IHTMLTABLEROW_INSERTCELL)] IDispatch *insertCell ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLEROW_DELETECELL)] void deleteCell ([defaultvalue (-1), in] long index);
    [propput, id (DISPID_IHTMLTABLEROW2_HEIGHT)] void height (VARIANT v);
    [propget, id (DISPID_IHTMLTABLEROW2_HEIGHT)] VARIANT height ();
    [propput, id (DISPID_IHTMLTABLEROW3_CH), displaybind, bindable] void ch (BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW3_CH), displaybind, bindable] BSTR ch ();
    [propput, id (DISPID_IHTMLTABLEROW3_CHOFF), displaybind, bindable] void chOff (BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW3_CHOFF), displaybind, bindable] BSTR chOff ();
    [propput, id (DISPID_IHTMLTABLEROW4_IE9_CH), displaybind, bindable] void ie9_ch (BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW4_IE9_CH), displaybind, bindable] BSTR ie9_ch ();
    [propput, id (DISPID_IHTMLTABLEROW4_IE9_CHOFF), displaybind, bindable] void ie9_chOff (BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW4_IE9_CHOFF), displaybind, bindable] BSTR ie9_chOff ();
    [id (DISPID_IHTMLTABLEROW4_IE9_INSERTCELL)] IDispatch *ie9_insertCell ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLEROW4_IE9_DELETECELL)] void ie9_deleteCell ([defaultvalue (-1), in] long index);
  };
  [noncreatable, uuid (3050f26d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTableRow {
    [default] dispinterface DispHTMLTableRow;
    [source, default] dispinterface HTMLControlElementEvents;
    [source] dispinterface HTMLControlElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLTableRow;
    interface IHTMLTableRowMetrics;
    interface IHTMLTableRow2;
    interface IHTMLTableRow3;
    interface IHTMLTableRow4;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTableRow;")
  [hidden, uuid (3050f536-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTableCell {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLTABLECELL_ROWSPAN)] void rowSpan (long v);
    [propget, id (DISPID_IHTMLTABLECELL_ROWSPAN)] long rowSpan ();
    [propput, id (DISPID_IHTMLTABLECELL_COLSPAN)] void colSpan (long v);
    [propget, id (DISPID_IHTMLTABLECELL_COLSPAN)] long colSpan ();
    [propput, id (DISPID_IHTMLTABLECELL_ALIGN)] void align (BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL_ALIGN)] BSTR align ();
    [propput, id (DISPID_IHTMLTABLECELL_VALIGN)] void vAlign (BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL_VALIGN)] BSTR vAlign ();
    [propput, id (DISPID_IHTMLTABLECELL_BGCOLOR)] void bgColor (VARIANT v);
    [propget, id (DISPID_IHTMLTABLECELL_BGCOLOR)] VARIANT bgColor ();
    [propput, id (DISPID_IHTMLTABLECELL_NOWRAP)] void noWrap (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLTABLECELL_NOWRAP)] VARIANT_BOOL noWrap ();
    [propput, id (DISPID_IHTMLTABLECELL_BACKGROUND)] void background (BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL_BACKGROUND)] BSTR background ();
    [propput, id (DISPID_IHTMLTABLECELL_BORDERCOLOR)] void borderColor (VARIANT v);
    [propget, id (DISPID_IHTMLTABLECELL_BORDERCOLOR)] VARIANT borderColor ();
    [propput, id (DISPID_IHTMLTABLECELL_BORDERCOLORLIGHT)] void borderColorLight (VARIANT v);
    [propget, id (DISPID_IHTMLTABLECELL_BORDERCOLORLIGHT)] VARIANT borderColorLight ();
    [propput, id (DISPID_IHTMLTABLECELL_BORDERCOLORDARK)] void borderColorDark (VARIANT v);
    [propget, id (DISPID_IHTMLTABLECELL_BORDERCOLORDARK)] VARIANT borderColorDark ();
    [propput, id (DISPID_IHTMLTABLECELL_WIDTH)] void width (VARIANT v);
    [propget, id (DISPID_IHTMLTABLECELL_WIDTH)] VARIANT width ();
    [propput, id (DISPID_IHTMLTABLECELL_HEIGHT)] void height (VARIANT v);
    [propget, id (DISPID_IHTMLTABLECELL_HEIGHT)] VARIANT height ();
    [propget, id (DISPID_IHTMLTABLECELL_CELLINDEX)] long cellIndex ();
    [propput, id (DISPID_IHTMLTABLECELL2_ABBR), displaybind, bindable] void abbr (BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_ABBR), displaybind, bindable] BSTR abbr ();
    [propput, id (DISPID_IHTMLTABLECELL2_AXIS), displaybind, bindable] void axis (BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_AXIS), displaybind, bindable] BSTR axis ();
    [propput, id (DISPID_IHTMLTABLECELL2_CH), displaybind, bindable] void ch (BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_CH), displaybind, bindable] BSTR ch ();
    [propput, id (DISPID_IHTMLTABLECELL2_CHOFF), displaybind, bindable] void chOff (BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_CHOFF), displaybind, bindable] BSTR chOff ();
    [propput, id (DISPID_IHTMLTABLECELL2_HEADERS), displaybind, bindable] void headers (BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_HEADERS), displaybind, bindable] BSTR headers ();
    [propput, id (DISPID_IHTMLTABLECELL2_SCOPE), displaybind, bindable] void scope (BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_SCOPE), displaybind, bindable] BSTR scope ();
    [propput, id (DISPID_IHTMLTABLECELL3_IE9_CH), displaybind, bindable] void ie9_ch (BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL3_IE9_CH), displaybind, bindable] BSTR ie9_ch ();
    [propput, id (DISPID_IHTMLTABLECELL3_IE9_CHOFF), displaybind, bindable] void ie9_chOff (BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL3_IE9_CHOFF), displaybind, bindable] BSTR ie9_chOff ();
  };
  [noncreatable, uuid (3050f246-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTableCell {
    [default] dispinterface DispHTMLTableCell;
    [source, default] dispinterface HTMLTextContainerEvents;
    [source] dispinterface HTMLTextContainerEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLTableCell;
    interface IHTMLTableCell2;
    interface IHTMLTableCell3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTableCell;")
  [hidden, uuid (3050f621-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLScriptEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLSCRIPTEVENTS2_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f3e2-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLScriptEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
    [id (DISPID_HTMLSCRIPTEVENTS_ONERROR)] void onerror ();
  };
  [odl, oleautomation, dual, uuid (3050f28b-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLScriptElement : IDispatch {
    [propput, id (DISPID_IHTMLSCRIPTELEMENT_SRC), displaybind, bindable] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT_SRC), displaybind, bindable] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable] HRESULT htmlFor ([in] BSTR v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable] HRESULT htmlFor ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable] HRESULT event ([in] BSTR v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable] HRESULT event ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable] HRESULT text ([in] BSTR v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable] HRESULT text ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable] HRESULT defer ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable] HRESULT defer ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT_READYSTATE)] HRESULT readyState ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSCRIPTELEMENT_ONERROR), displaybind, bindable] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT_ONERROR), displaybind, bindable] HRESULT onerror ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable] HRESULT type ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f828-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLScriptElement2 : IDispatch {
    [propput, id (DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable] HRESULT charset ([in] BSTR v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable] HRESULT charset ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510447-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLScriptElement3 : IDispatch {
    [propput, id (DISPID_IHTMLSCRIPTELEMENT3_IE8_SRC)] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT3_IE8_SRC)] HRESULT src ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510801-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLScriptElement4 : IDispatch {
    [propget, id (DISPID_IHTMLSCRIPTELEMENT4_USEDCHARSET)] HRESULT usedCharset ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f530-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLScriptElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLSCRIPTELEMENT_SRC), displaybind, bindable] void src (BSTR v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT_SRC), displaybind, bindable] BSTR src ();
    [propput, id (DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable] void htmlFor (BSTR v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable] BSTR htmlFor ();
    [propput, id (DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable] void event (BSTR v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable] BSTR event ();
    [propput, id (DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable] void text (BSTR v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable] BSTR text ();
    [propput, id (DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable] void defer (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable] VARIANT_BOOL defer ();
    [propput, id (DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable] void type (BSTR v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable] BSTR type ();
    [propput, id (DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable] void charset (BSTR v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable] BSTR charset ();
    [propput, id (DISPID_IHTMLSCRIPTELEMENT3_IE8_SRC)] void ie8_src (BSTR v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT3_IE8_SRC)] BSTR ie8_src ();
    [propget, id (DISPID_IHTMLSCRIPTELEMENT4_USEDCHARSET)] BSTR usedCharset ();
  };
  [noncreatable, uuid (3050f28c-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLScriptElement {
    [default] dispinterface DispHTMLScriptElement;
    [source, default] dispinterface HTMLScriptEvents;
    [source] dispinterface HTMLScriptEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLScriptElement;
    interface IHTMLScriptElement2;
    interface IHTMLScriptElement3;
    interface IHTMLScriptElement4;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CScriptElement;")
  [odl, oleautomation, dual, uuid (3050f38a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLNoShowElement : IDispatch {
  };
  [hidden, uuid (3050f528-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLNoShowElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
  };
  [noncreatable, uuid (3050f38b-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLNoShowElement {
    [default] dispinterface DispHTMLNoShowElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLNoShowElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CNoShowElement;")
  [hidden, uuid (3050f620-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLObjectElementEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONERROR)] VARIANT_BOOL onerror ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f3c4-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLObjectElementEvents {
    properties:
    methods:
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONERROR)] VARIANT_BOOL onerror ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
  };
  [odl, oleautomation, dual, uuid (3050f24f-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLObjectElement : IDispatch {
    [propget, id (DISPID_IHTMLOBJECTELEMENT_OBJECT), hidden] HRESULT object ([retval, out] IDispatch **p);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_CLASSID), hidden] HRESULT classid ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_DATA), hidden] HRESULT data ([retval, out] BSTR *p);
    [propputref, id (DISPID_IHTMLOBJECTELEMENT_RECORDSET), hidden] HRESULT recordset ([in] IDispatch *v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_RECORDSET), hidden] HRESULT recordset ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT_ALIGN), displaybind, bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_ALIGN), displaybind, bindable] HRESULT align ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT_CODEBASE), displaybind, bindable] HRESULT codeBase ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_CODEBASE), displaybind, bindable] HRESULT codeBase ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT_CODETYPE), displaybind, bindable] HRESULT codeType ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_CODETYPE), displaybind, bindable] HRESULT codeType ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT_CODE), displaybind, bindable] HRESULT code ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_CODE), displaybind, bindable] HRESULT code ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_BASEHREF)] HRESULT BaseHref ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT_TYPE), displaybind, bindable] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_TYPE), displaybind, bindable] HRESULT type ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT_WIDTH)] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_WIDTH)] HRESULT width ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT_HEIGHT)] HRESULT height ([in] VARIANT v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_HEIGHT)] HRESULT height ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_READYSTATE), hidden] HRESULT readyState ([retval, out] long *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT_ONERROR), displaybind, bindable] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_ONERROR), displaybind, bindable] HRESULT onerror ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT_ALTHTML)] HRESULT altHtml ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_ALTHTML)] HRESULT altHtml ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT_VSPACE)] HRESULT vspace ([in] long v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_VSPACE)] HRESULT vspace ([retval, out] long *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT_HSPACE)] HRESULT hspace ([in] long v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_HSPACE)] HRESULT hspace ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (3050f4cd-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLObjectElement2 : IDispatch {
    [id (DISPID_IHTMLOBJECTELEMENT2_NAMEDRECORDSET)] HRESULT namedRecordset ([in] BSTR dataMember,[optional, in] VARIANT *hierarchy,[retval, out] IDispatch **ppRecordset);
    [propput, id (DISPID_IHTMLOBJECTELEMENT2_CLASSID), hidden] HRESULT classid ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT2_CLASSID), hidden] HRESULT classid ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT2_DATA), hidden] HRESULT data ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT2_DATA), hidden] HRESULT data ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f827-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLObjectElement3 : IDispatch {
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_ARCHIVE), displaybind, bindable] HRESULT archive ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_ARCHIVE), displaybind, bindable] HRESULT archive ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_ALT), displaybind, bindable] HRESULT alt ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_ALT), displaybind, bindable] HRESULT alt ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_DECLARE), displaybind, bindable] HRESULT declare ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_DECLARE), displaybind, bindable] HRESULT declare ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_STANDBY), displaybind, bindable] HRESULT standby ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_STANDBY), displaybind, bindable] HRESULT standby ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_BORDER)] HRESULT border ([in] VARIANT v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_BORDER)] HRESULT border ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_USEMAP), displaybind, bindable] HRESULT useMap ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_USEMAP), displaybind, bindable] HRESULT useMap ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3051043e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLObjectElement4 : IDispatch {
    [propget, id (DISPID_IHTMLOBJECTELEMENT4_CONTENTDOCUMENT)] HRESULT contentDocument ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT4_IE8_CODEBASE)] HRESULT codeBase ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT4_IE8_CODEBASE)] HRESULT codeBase ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT4_IE8_DATA), hidden] HRESULT data ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT4_IE8_DATA), hidden] HRESULT data ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305104b5-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLObjectElement5 : IDispatch {
    [propput, id (DISPID_IHTMLOBJECTELEMENT5_IE9_OBJECT)] HRESULT object ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT5_IE9_OBJECT)] HRESULT object ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f83d-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLParamElement : IDispatch {
    [propput, id (DISPID_IHTMLPARAMELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLPARAMELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLPARAMELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLPARAMELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLPARAMELEMENT_TYPE), displaybind, bindable] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLPARAMELEMENT_TYPE), displaybind, bindable] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLPARAMELEMENT_VALUETYPE), displaybind, bindable] HRESULT valueType ([in] BSTR v);
    [propget, id (DISPID_IHTMLPARAMELEMENT_VALUETYPE), displaybind, bindable] HRESULT valueType ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510444-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLParamElement2 : IDispatch {
    [propput, id (DISPID_IHTMLPARAMELEMENT2_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLPARAMELEMENT2_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLPARAMELEMENT2_TYPE), displaybind, bindable] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLPARAMELEMENT2_TYPE), displaybind, bindable] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLPARAMELEMENT2_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLPARAMELEMENT2_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLPARAMELEMENT2_IE8_VALUETYPE)] HRESULT valueType ([in] BSTR v);
    [propget, id (DISPID_IHTMLPARAMELEMENT2_IE8_VALUETYPE)] HRESULT valueType ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f529-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLObjectElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propget, id (DISPID_IHTMLOBJECTELEMENT_OBJECT), hidden] IDispatch *object ();
    [propputref, id (DISPID_IHTMLOBJECTELEMENT_RECORDSET), hidden] void recordset (IDispatch *v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_RECORDSET), hidden] IDispatch *recordset ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT_ALIGN), displaybind, bindable] void align (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_ALIGN), displaybind, bindable] BSTR align ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT_CODEBASE), displaybind, bindable] void codeBase (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_CODEBASE), displaybind, bindable] BSTR codeBase ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT_CODETYPE), displaybind, bindable] void codeType (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_CODETYPE), displaybind, bindable] BSTR codeType ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT_CODE), displaybind, bindable] void code (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_CODE), displaybind, bindable] BSTR code ();
    [propget, id (DISPID_IHTMLOBJECTELEMENT_BASEHREF)] BSTR BaseHref ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT_TYPE), displaybind, bindable] void type (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_TYPE), displaybind, bindable] BSTR type ();
    [propget, id (DISPID_IHTMLOBJECTELEMENT_FORM)] IHTMLFormElement *form ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT_WIDTH)] void width (VARIANT v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_WIDTH)] VARIANT width ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT_HEIGHT)] void height (VARIANT v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_HEIGHT)] VARIANT height ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT_ALTHTML)] void altHtml (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_ALTHTML)] BSTR altHtml ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT_VSPACE)] void vspace (long v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_VSPACE)] long vspace ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT_HSPACE)] void hspace (long v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT_HSPACE)] long hspace ();
    [id (DISPID_IHTMLOBJECTELEMENT2_NAMEDRECORDSET)] IDispatch *namedRecordset ([in] BSTR dataMember,[optional, in] VARIANT *hierarchy);
    [propput, id (DISPID_IHTMLOBJECTELEMENT2_CLASSID), hidden] void classid (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT2_CLASSID), hidden] BSTR classid ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT2_DATA), hidden] void data (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT2_DATA), hidden] BSTR data ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_ARCHIVE), displaybind, bindable] void archive (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_ARCHIVE), displaybind, bindable] BSTR archive ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_ALT), displaybind, bindable] void alt (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_ALT), displaybind, bindable] BSTR alt ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_DECLARE), displaybind, bindable] void declare (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_DECLARE), displaybind, bindable] VARIANT_BOOL declare ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_STANDBY), displaybind, bindable] void standby (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_STANDBY), displaybind, bindable] BSTR standby ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_BORDER)] void border (VARIANT v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_BORDER)] VARIANT border ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_USEMAP), displaybind, bindable] void useMap (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_USEMAP), displaybind, bindable] BSTR useMap ();
    [propget, id (DISPID_IHTMLOBJECTELEMENT4_CONTENTDOCUMENT)] IDispatch *contentDocument ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT4_IE8_CODEBASE)] void ie8_codeBase (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT4_IE8_CODEBASE)] BSTR ie8_codeBase ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT4_IE8_DATA), hidden] void ie8_data (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT4_IE8_DATA), hidden] BSTR ie8_data ();
    [id (DISPID_IGETSVGDOCUMENT_GETSVGDOCUMENT)] IDispatch *getSVGDocument ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT5_IE9_OBJECT)] void ie9_object (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT5_IE9_OBJECT)] BSTR ie9_object ();
  };
  [noncreatable, uuid (3050f24e-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLObjectElement {
    [default] dispinterface DispHTMLObjectElement;
    [source, default] dispinterface HTMLObjectElementEvents;
    [source] dispinterface HTMLObjectElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLObjectElement;
    interface IHTMLObjectElement2;
    interface IHTMLObjectElement3;
    interface IHTMLObjectElement4;
    interface IGetSVGDocument;
    interface IHTMLObjectElement5;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CObjectElement;")
  [hidden, uuid (3050f590-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLParamElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLPARAMELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLPARAMELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propput, id (DISPID_IHTMLPARAMELEMENT_VALUE), displaybind, bindable] void value (BSTR v);
    [propget, id (DISPID_IHTMLPARAMELEMENT_VALUE), displaybind, bindable] BSTR value ();
    [propput, id (DISPID_IHTMLPARAMELEMENT_TYPE), displaybind, bindable] void type (BSTR v);
    [propget, id (DISPID_IHTMLPARAMELEMENT_TYPE), displaybind, bindable] BSTR type ();
    [propput, id (DISPID_IHTMLPARAMELEMENT_VALUETYPE), displaybind, bindable] void valueType (BSTR v);
    [propget, id (DISPID_IHTMLPARAMELEMENT_VALUETYPE), displaybind, bindable] BSTR valueType ();
    [propput, id (DISPID_IHTMLPARAMELEMENT2_IE8_VALUETYPE)] void ie8_valueType (BSTR v);
    [propget, id (DISPID_IHTMLPARAMELEMENT2_IE8_VALUETYPE)] BSTR ie8_valueType ();
  };
  [noncreatable, uuid (3050f83e-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLParamElement {
    [default] dispinterface DispHTMLParamElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLParamElement;
    interface IHTMLParamElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CParamElement;")
  [hidden, uuid (3050f7ff-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLFrameSiteEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLFRAMESITEEVENTS2_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f800-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLFrameSiteEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
    [id (DISPID_HTMLFRAMESITEEVENTS_ONLOAD)] void onload ();
  };
  typedef enum _frameScrolling {
    frameScrollingyes = 1,
    frameScrollingno = 2,
    frameScrollingauto = 4,
    frameScrolling_Max = 0x7FFFFFFF
  } frameScrolling;
  [odl, oleautomation, dual, uuid (3050f311-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFrameBase : IDispatch {
    [propput, id (DISPID_IHTMLFRAMEBASE_SRC)] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_SRC)] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMEBASE_NAME)] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_NAME)] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMEBASE_BORDER)] HRESULT border ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_BORDER)] HRESULT border ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMEBASE_FRAMEBORDER)] HRESULT frameBorder ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_FRAMEBORDER)] HRESULT frameBorder ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMEBASE_FRAMESPACING)] HRESULT frameSpacing ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_FRAMESPACING)] HRESULT frameSpacing ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMEBASE_MARGINWIDTH)] HRESULT marginWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_MARGINWIDTH)] HRESULT marginWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)] HRESULT marginHeight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)] HRESULT marginHeight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMEBASE_NORESIZE)] HRESULT noResize ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLFRAMEBASE_NORESIZE)] HRESULT noResize ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLFRAMEBASE_SCROLLING)] HRESULT scrolling ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_SCROLLING)] HRESULT scrolling ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f6db-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFrameBase2 : IDispatch {
    [propget, id (DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW)] HRESULT contentWindow ([retval, out] IHTMLWindow2 **p);
    [propput, id (DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMEBASE2_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE2_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLFRAMEBASE2_READYSTATE)] HRESULT readyState ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)] HRESULT allowTransparency ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)] HRESULT allowTransparency ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (3050f82e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFrameBase3 : IDispatch {
    [propput, id (DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] HRESULT longDesc ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] HRESULT longDesc ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f541-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLFrameBase {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLFRAMEBASE_SRC)] void src (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_SRC)] BSTR src ();
    [propput, id (DISPID_IHTMLFRAMEBASE_NAME)] void name (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_NAME)] BSTR name ();
    [propput, id (DISPID_IHTMLFRAMEBASE_BORDER)] void border (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_BORDER)] VARIANT border ();
    [propput, id (DISPID_IHTMLFRAMEBASE_FRAMEBORDER)] void frameBorder (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_FRAMEBORDER)] BSTR frameBorder ();
    [propput, id (DISPID_IHTMLFRAMEBASE_FRAMESPACING)] void frameSpacing (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_FRAMESPACING)] VARIANT frameSpacing ();
    [propput, id (DISPID_IHTMLFRAMEBASE_MARGINWIDTH)] void marginWidth (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_MARGINWIDTH)] VARIANT marginWidth ();
    [propput, id (DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)] void marginHeight (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)] VARIANT marginHeight ();
    [propput, id (DISPID_IHTMLFRAMEBASE_NORESIZE)] void noResize (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLFRAMEBASE_NORESIZE)] VARIANT_BOOL noResize ();
    [propput, id (DISPID_IHTMLFRAMEBASE_SCROLLING)] void scrolling (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_SCROLLING)] BSTR scrolling ();
    [propget, id (DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW)] IHTMLWindow2 *contentWindow ();
    [propput, id (DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)] void allowTransparency (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)] VARIANT_BOOL allowTransparency ();
    [propput, id (DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] void longDesc (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] BSTR longDesc ();
  };
  [noncreatable, uuid (3050f312-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLFrameBase {
    [default] dispinterface DispHTMLFrameBase;
    [source, default] dispinterface HTMLControlElementEvents;
    [source] dispinterface HTMLControlElementEvents2;
    [source] dispinterface HTMLFrameSiteEvents;
    [source] dispinterface HTMLFrameSiteEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLFrameBase;
    interface IHTMLFrameBase2;
    interface IHTMLFrameBase3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CFrameSite;")
  [odl, oleautomation, dual, uuid (3050f313-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFrameElement : IDispatch {
    [propput, id (DISPID_IHTMLFRAMEELEMENT_BORDERCOLOR)] HRESULT borderColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT_BORDERCOLOR)] HRESULT borderColor ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (3050f7f5-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFrameElement2 : IDispatch {
    [propput, id (DISPID_IHTMLFRAMEELEMENT2_HEIGHT)] HRESULT height ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT2_HEIGHT)] HRESULT height ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMEELEMENT2_WIDTH)] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT2_WIDTH)] HRESULT width ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (3051042d-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFrameElement3 : IDispatch {
    [propget, id (DISPID_IHTMLFRAMEELEMENT3_CONTENTDOCUMENT)] HRESULT contentDocument ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)] HRESULT longDesc ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)] HRESULT longDesc ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)] HRESULT frameBorder ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)] HRESULT frameBorder ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f513-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLFrameElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLFRAMEBASE_SRC)] void src (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_SRC)] BSTR src ();
    [propput, id (DISPID_IHTMLFRAMEBASE_NAME)] void name (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_NAME)] BSTR name ();
    [propput, id (DISPID_IHTMLFRAMEBASE_BORDER)] void border (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_BORDER)] VARIANT border ();
    [propput, id (DISPID_IHTMLFRAMEBASE_FRAMEBORDER)] void frameBorder (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_FRAMEBORDER)] BSTR frameBorder ();
    [propput, id (DISPID_IHTMLFRAMEBASE_FRAMESPACING)] void frameSpacing (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_FRAMESPACING)] VARIANT frameSpacing ();
    [propput, id (DISPID_IHTMLFRAMEBASE_MARGINWIDTH)] void marginWidth (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_MARGINWIDTH)] VARIANT marginWidth ();
    [propput, id (DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)] void marginHeight (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)] VARIANT marginHeight ();
    [propput, id (DISPID_IHTMLFRAMEBASE_NORESIZE)] void noResize (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLFRAMEBASE_NORESIZE)] VARIANT_BOOL noResize ();
    [propput, id (DISPID_IHTMLFRAMEBASE_SCROLLING)] void scrolling (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_SCROLLING)] BSTR scrolling ();
    [propget, id (DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW)] IHTMLWindow2 *contentWindow ();
    [propput, id (DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)] void allowTransparency (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)] VARIANT_BOOL allowTransparency ();
    [propput, id (DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] void longDesc (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] BSTR longDesc ();
    [propput, id (DISPID_IHTMLFRAMEELEMENT_BORDERCOLOR)] void borderColor (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT_BORDERCOLOR)] VARIANT borderColor ();
    [propput, id (DISPID_IHTMLFRAMEELEMENT2_HEIGHT)] void height (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT2_HEIGHT)] VARIANT height ();
    [propput, id (DISPID_IHTMLFRAMEELEMENT2_WIDTH)] void width (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT2_WIDTH)] VARIANT width ();
    [propget, id (DISPID_IHTMLFRAMEELEMENT3_CONTENTDOCUMENT)] IDispatch *contentDocument ();
    [propput, id (DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)] void ie8_src (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)] BSTR ie8_src ();
    [propput, id (DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)] void ie8_longDesc (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)] BSTR ie8_longDesc ();
    [propput, id (DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)] void ie8_frameBorder (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)] BSTR ie8_frameBorder ();
    [id (DISPID_IGETSVGDOCUMENT_GETSVGDOCUMENT)] IDispatch *getSVGDocument ();
  };
  [noncreatable, uuid (3050f314-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLFrameElement {
    [default] dispinterface DispHTMLFrameElement;
    [source, default] dispinterface HTMLControlElementEvents;
    [source] dispinterface HTMLControlElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLFrameBase;
    interface IHTMLFrameBase2;
    interface IHTMLFrameBase3;
    interface IHTMLFrameElement;
    interface IHTMLFrameElement2;
    interface IHTMLFrameElement3;
    interface IGetSVGDocument;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CFrameElement;")
  typedef enum _sandboxAllow {
    sandboxAllowScripts = 0,
    sandboxAllowSameOrigin = 1,
    sandboxAllowTopNavigation = 2,
    sandboxAllowForms = 3,
    sandboxAllowPopups = 4,
    sandboxAllow_Max = 0x7FFFFFFF
  } sandboxAllow;
  [odl, oleautomation, dual, uuid (3050f315-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLIFrameElement : IDispatch {
    [propput, id (DISPID_IHTMLIFRAMEELEMENT_VSPACE)] HRESULT vspace ([in] long v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT_VSPACE)] HRESULT vspace ([retval, out] long *p);
    [propput, id (DISPID_IHTMLIFRAMEELEMENT_HSPACE)] HRESULT hspace ([in] long v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT_HSPACE)] HRESULT hspace ([retval, out] long *p);
    [propput, id (DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable] HRESULT align ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f4e6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLIFrameElement2 : IDispatch {
    [propput, id (DISPID_IHTMLIFRAMEELEMENT2_HEIGHT)] HRESULT height ([in] VARIANT v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT2_HEIGHT)] HRESULT height ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLIFRAMEELEMENT2_WIDTH)] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT2_WIDTH)] HRESULT width ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (30510433-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLIFrameElement3 : IDispatch {
    [propget, id (DISPID_IHTMLIFRAMEELEMENT3_CONTENTDOCUMENT)] HRESULT contentDocument ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_SRC)] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_SRC)] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_LONGDESC)] HRESULT longDesc ([in] BSTR v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_LONGDESC)] HRESULT longDesc ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_FRAMEBORDER)] HRESULT frameBorder ([in] BSTR v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_FRAMEBORDER)] HRESULT frameBorder ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f51b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLIFrame {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLFRAMEBASE_SRC)] void src (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_SRC)] BSTR src ();
    [propput, id (DISPID_IHTMLFRAMEBASE_NAME)] void name (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_NAME)] BSTR name ();
    [propput, id (DISPID_IHTMLFRAMEBASE_BORDER)] void border (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_BORDER)] VARIANT border ();
    [propput, id (DISPID_IHTMLFRAMEBASE_FRAMEBORDER)] void frameBorder (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_FRAMEBORDER)] BSTR frameBorder ();
    [propput, id (DISPID_IHTMLFRAMEBASE_FRAMESPACING)] void frameSpacing (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_FRAMESPACING)] VARIANT frameSpacing ();
    [propput, id (DISPID_IHTMLFRAMEBASE_MARGINWIDTH)] void marginWidth (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_MARGINWIDTH)] VARIANT marginWidth ();
    [propput, id (DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)] void marginHeight (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)] VARIANT marginHeight ();
    [propput, id (DISPID_IHTMLFRAMEBASE_NORESIZE)] void noResize (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLFRAMEBASE_NORESIZE)] VARIANT_BOOL noResize ();
    [propput, id (DISPID_IHTMLFRAMEBASE_SCROLLING)] void scrolling (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_SCROLLING)] BSTR scrolling ();
    [propget, id (DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW)] IHTMLWindow2 *contentWindow ();
    [propput, id (DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)] void allowTransparency (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)] VARIANT_BOOL allowTransparency ();
    [propput, id (DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] void longDesc (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] BSTR longDesc ();
    [propput, id (DISPID_IHTMLIFRAMEELEMENT_VSPACE)] void vspace (long v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT_VSPACE)] long vspace ();
    [propput, id (DISPID_IHTMLIFRAMEELEMENT_HSPACE)] void hspace (long v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT_HSPACE)] long hspace ();
    [propput, id (DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable] void align (BSTR v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable] BSTR align ();
    [propput, id (DISPID_IHTMLIFRAMEELEMENT2_HEIGHT)] void height (VARIANT v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT2_HEIGHT)] VARIANT height ();
    [propput, id (DISPID_IHTMLIFRAMEELEMENT2_WIDTH)] void width (VARIANT v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT2_WIDTH)] VARIANT width ();
    [propget, id (DISPID_IHTMLIFRAMEELEMENT3_CONTENTDOCUMENT)] IDispatch *contentDocument ();
    [propput, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_SRC)] void ie8_src (BSTR v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_SRC)] BSTR ie8_src ();
    [propput, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_LONGDESC)] void ie8_longDesc (BSTR v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_LONGDESC)] BSTR ie8_longDesc ();
    [propput, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_FRAMEBORDER)] void ie8_frameBorder (BSTR v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_FRAMEBORDER)] BSTR ie8_frameBorder ();
    [id (DISPID_IGETSVGDOCUMENT_GETSVGDOCUMENT)] IDispatch *getSVGDocument ();
  };
  [noncreatable, uuid (3050f316-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLIFrame {
    [default] dispinterface DispHTMLIFrame;
    [source, default] dispinterface HTMLControlElementEvents;
    [source] dispinterface HTMLControlElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLFrameBase;
    interface IHTMLFrameBase2;
    interface IHTMLFrameBase3;
    interface IHTMLIFrameElement;
    interface IHTMLIFrameElement2;
    interface IHTMLIFrameElement3;
    interface IGetSVGDocument;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CIFrameElement;")
  [odl, oleautomation, dual, uuid (3050f212-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDivPosition : IDispatch {
    [propput, id (DISPID_IHTMLDIVPOSITION_ALIGN), displaybind, bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLDIVPOSITION_ALIGN), displaybind, bindable] HRESULT align ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f3e7-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFieldSetElement : IDispatch {
    [propput, id (DISPID_IHTMLFIELDSETELEMENT_ALIGN), displaybind, bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLFIELDSETELEMENT_ALIGN), displaybind, bindable] HRESULT align ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f833-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFieldSetElement2 : IDispatch {
    [propget, id (DISPID_IHTMLFIELDSETELEMENT2_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
  };
  [odl, oleautomation, dual, uuid (3050f3ea-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLLegendElement : IDispatch {
    [propput, id (DISPID_IHTMLLEGENDELEMENT_ALIGN)] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLLEGENDELEMENT_ALIGN)] HRESULT align ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f834-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLLegendElement2 : IDispatch {
    [propget, id (DISPID_IHTMLLEGENDELEMENT2_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
  };
  [hidden, uuid (3050f50f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDivPosition {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLDIVPOSITION_ALIGN), displaybind, bindable] void align (BSTR v);
    [propget, id (DISPID_IHTMLDIVPOSITION_ALIGN), displaybind, bindable] BSTR align ();
  };
  [noncreatable, uuid (3050f249-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDivPosition {
    [default] dispinterface DispHTMLDivPosition;
    [source, default] dispinterface HTMLTextContainerEvents;
    [source] dispinterface HTMLTextContainerEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLDivPosition;
  };
  cpp_quote("EXTERN_C const GUID CLSID_C1DElement;")
  [hidden, uuid (3050f545-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLFieldSetElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLFIELDSETELEMENT_ALIGN), displaybind, bindable] void align (BSTR v);
    [propget, id (DISPID_IHTMLFIELDSETELEMENT_ALIGN), displaybind, bindable] BSTR align ();
    [propget, id (DISPID_IHTMLFIELDSETELEMENT2_FORM)] IHTMLFormElement *form ();
  };
  [noncreatable, uuid (3050f3e8-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLFieldSetElement {
    [default] dispinterface DispHTMLFieldSetElement;
    [source, default] dispinterface HTMLTextContainerEvents;
    [source] dispinterface HTMLTextContainerEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLFieldSetElement;
    interface IHTMLFieldSetElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CFieldSetElement;")
  [hidden, uuid (3050f546-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLLegendElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLLEGENDELEMENT_ALIGN)] void align (BSTR v);
    [propget, id (DISPID_IHTMLLEGENDELEMENT_ALIGN)] BSTR align ();
    [propget, id (DISPID_IHTMLLEGENDELEMENT2_FORM)] IHTMLFormElement *form ();
  };
  [noncreatable, uuid (3050f3e9-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLLegendElement {
    [default] dispinterface DispHTMLLegendElement;
    [source, default] dispinterface HTMLTextContainerEvents;
    [source] dispinterface HTMLTextContainerEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLLegendElement;
    interface IHTMLLegendElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CLegendElement;")
  [odl, oleautomation, dual, uuid (3050f3e5-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSpanFlow : IDispatch {
    [propput, id (DISPID_IHTMLSPANFLOW_ALIGN), displaybind, bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLSPANFLOW_ALIGN), displaybind, bindable] HRESULT align ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f544-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLSpanFlow {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLSPANFLOW_ALIGN), displaybind, bindable] void align (BSTR v);
    [propget, id (DISPID_IHTMLSPANFLOW_ALIGN), displaybind, bindable] BSTR align ();
  };
  [noncreatable, uuid (3050f3e6-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLSpanFlow {
    [default] dispinterface DispHTMLSpanFlow;
    [source, default] dispinterface HTMLTextContainerEvents;
    [source] dispinterface HTMLTextContainerEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLSpanFlow;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSpanSite;")
  [odl, oleautomation, dual, uuid (3050f319-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFrameSetElement : IDispatch {
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_ROWS), displaybind, bindable] HRESULT rows ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_ROWS), displaybind, bindable] HRESULT rows ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_COLS), displaybind, bindable] HRESULT cols ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_COLS), displaybind, bindable] HRESULT cols ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_BORDER)] HRESULT border ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_BORDER)] HRESULT border ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_BORDERCOLOR)] HRESULT borderColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_BORDERCOLOR)] HRESULT borderColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_FRAMEBORDER)] HRESULT frameBorder ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_FRAMEBORDER)] HRESULT frameBorder ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_FRAMESPACING)] HRESULT frameSpacing ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_FRAMESPACING)] HRESULT frameSpacing ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_ONUNLOAD), displaybind, bindable] HRESULT onunload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_ONUNLOAD), displaybind, bindable] HRESULT onunload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_ONBEFOREUNLOAD), displaybind, bindable] HRESULT onbeforeunload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_ONBEFOREUNLOAD), displaybind, bindable] HRESULT onbeforeunload ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (3050f5c6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFrameSetElement2 : IDispatch {
    [propput, id (DISPID_IHTMLFRAMESETELEMENT2_ONBEFOREPRINT), displaybind, bindable] HRESULT onbeforeprint ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT2_ONBEFOREPRINT), displaybind, bindable] HRESULT onbeforeprint ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT2_ONAFTERPRINT), displaybind, bindable] HRESULT onafterprint ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT2_ONAFTERPRINT), displaybind, bindable] HRESULT onafterprint ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (30510796-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFrameSetElement3 : IDispatch {
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONHASHCHANGE), displaybind, bindable] HRESULT onhashchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONHASHCHANGE), displaybind, bindable] HRESULT onhashchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONMESSAGE), displaybind, bindable] HRESULT onmessage ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONMESSAGE), displaybind, bindable] HRESULT onmessage ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONOFFLINE), displaybind, bindable] HRESULT onoffline ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONOFFLINE), displaybind, bindable] HRESULT onoffline ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONONLINE), displaybind, bindable] HRESULT ononline ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONONLINE), displaybind, bindable] HRESULT ononline ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONSTORAGE), displaybind, bindable] HRESULT onstorage ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONSTORAGE), displaybind, bindable] HRESULT onstorage ([retval, out] VARIANT *p);
  };
  [hidden, uuid (3050f514-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLFrameSetSite {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_ROWS), displaybind, bindable] void rows (BSTR v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_ROWS), displaybind, bindable] BSTR rows ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_COLS), displaybind, bindable] void cols (BSTR v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_COLS), displaybind, bindable] BSTR cols ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_BORDER)] void border (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_BORDER)] VARIANT border ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_BORDERCOLOR)] void borderColor (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_BORDERCOLOR)] VARIANT borderColor ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_FRAMEBORDER)] void frameBorder (BSTR v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_FRAMEBORDER)] BSTR frameBorder ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_FRAMESPACING)] void frameSpacing (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_FRAMESPACING)] VARIANT frameSpacing ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_ONUNLOAD), displaybind, bindable] void onunload (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_ONUNLOAD), displaybind, bindable] VARIANT onunload ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_ONBEFOREUNLOAD), displaybind, bindable] void onbeforeunload (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_ONBEFOREUNLOAD), displaybind, bindable] VARIANT onbeforeunload ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT2_ONBEFOREPRINT), displaybind, bindable] void onbeforeprint (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT2_ONBEFOREPRINT), displaybind, bindable] VARIANT onbeforeprint ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT2_ONAFTERPRINT), displaybind, bindable] void onafterprint (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT2_ONAFTERPRINT), displaybind, bindable] VARIANT onafterprint ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONHASHCHANGE), displaybind, bindable] void onhashchange (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONHASHCHANGE), displaybind, bindable] VARIANT onhashchange ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONMESSAGE), displaybind, bindable] void onmessage (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONMESSAGE), displaybind, bindable] VARIANT onmessage ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONOFFLINE), displaybind, bindable] void onoffline (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONOFFLINE), displaybind, bindable] VARIANT onoffline ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONONLINE), displaybind, bindable] void ononline (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONONLINE), displaybind, bindable] VARIANT ononline ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONSTORAGE), displaybind, bindable] void onstorage (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONSTORAGE), displaybind, bindable] VARIANT onstorage ();
  };
  [noncreatable, uuid (3050f31a-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLFrameSetSite {
    [default] dispinterface DispHTMLFrameSetSite;
    [source, default] dispinterface HTMLControlElementEvents;
    [source] dispinterface HTMLControlElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLFrameSetElement;
    interface IHTMLFrameSetElement2;
    interface IHTMLFrameSetElement3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CFrameSetSite;")
  [odl, oleautomation, dual, uuid (3050f369-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBGsound : IDispatch {
    [propput, id (DISPID_IHTMLBGSOUND_SRC), displaybind, bindable] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLBGSOUND_SRC), displaybind, bindable] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBGSOUND_LOOP), displaybind, bindable] HRESULT loop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBGSOUND_LOOP), displaybind, bindable] HRESULT loop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBGSOUND_VOLUME), displaybind, bindable] HRESULT volume ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBGSOUND_VOLUME), displaybind, bindable] HRESULT volume ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBGSOUND_BALANCE), displaybind, bindable] HRESULT balance ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBGSOUND_BALANCE), displaybind, bindable] HRESULT balance ([retval, out] VARIANT *p);
  };
  [hidden, uuid (3050f53c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLBGsound {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLBGSOUND_SRC), displaybind, bindable] void src (BSTR v);
    [propget, id (DISPID_IHTMLBGSOUND_SRC), displaybind, bindable] BSTR src ();
    [propput, id (DISPID_IHTMLBGSOUND_LOOP), displaybind, bindable] void loop (VARIANT v);
    [propget, id (DISPID_IHTMLBGSOUND_LOOP), displaybind, bindable] VARIANT loop ();
    [propput, id (DISPID_IHTMLBGSOUND_VOLUME), displaybind, bindable] void volume (VARIANT v);
    [propget, id (DISPID_IHTMLBGSOUND_VOLUME), displaybind, bindable] VARIANT volume ();
    [propput, id (DISPID_IHTMLBGSOUND_BALANCE), displaybind, bindable] void balance (VARIANT v);
    [propget, id (DISPID_IHTMLBGSOUND_BALANCE), displaybind, bindable] VARIANT balance ();
  };
  [noncreatable, uuid (3050f370-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLBGsound {
    [default] dispinterface DispHTMLBGsound;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLBGsound;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CBGsound;")
  [odl, oleautomation, dual, uuid (3050f376-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFontNamesCollection : IDispatch {
    [propget, id (DISPID_IHTMLFONTNAMESCOLLECTION_LENGTH), hidden] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLFONTNAMESCOLLECTION__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLFONTNAMESCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] BSTR *pBstr);
  };
  [odl, oleautomation, dual, uuid (3050f377-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFontSizesCollection : IDispatch {
    [propget, id (DISPID_IHTMLFONTSIZESCOLLECTION_LENGTH), hidden] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLFONTSIZESCOLLECTION__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [propget, id (DISPID_IHTMLFONTSIZESCOLLECTION_FORFONT)] HRESULT forFont ([retval, out] BSTR *p);
    [id (DISPID_IHTMLFONTSIZESCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] long *plSize);
  };
  [odl, oleautomation, dual, uuid (3050f378-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLOptionsHolder : IDispatch {
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_DOCUMENT), hidden] HRESULT document ([retval, out] IHTMLDocument2 **p);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_FONTS), hidden] HRESULT fonts ([retval, out] IHTMLFontNamesCollection **p);
    [propput, id (DISPID_IHTMLOPTIONSHOLDER_EXECARG)] HRESULT execArg ([in] VARIANT v);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_EXECARG)] HRESULT execArg ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLOPTIONSHOLDER_ERRORLINE)] HRESULT errorLine ([in] long v);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_ERRORLINE)] HRESULT errorLine ([retval, out] long *p);
    [propput, id (DISPID_IHTMLOPTIONSHOLDER_ERRORCHARACTER)] HRESULT errorCharacter ([in] long v);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_ERRORCHARACTER)] HRESULT errorCharacter ([retval, out] long *p);
    [propput, id (DISPID_IHTMLOPTIONSHOLDER_ERRORCODE)] HRESULT errorCode ([in] long v);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_ERRORCODE)] HRESULT errorCode ([retval, out] long *p);
    [propput, id (DISPID_IHTMLOPTIONSHOLDER_ERRORMESSAGE)] HRESULT errorMessage ([in] BSTR v);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_ERRORMESSAGE)] HRESULT errorMessage ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOPTIONSHOLDER_ERRORDEBUG)] HRESULT errorDebug ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_ERRORDEBUG)] HRESULT errorDebug ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_UNSECUREDWINDOWOFDOCUMENT), hidden] HRESULT unsecuredWindowOfDocument ([retval, out] IHTMLWindow2 **p);
    [propput, id (DISPID_IHTMLOPTIONSHOLDER_FINDTEXT)] HRESULT findText ([in] BSTR v);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_FINDTEXT)] HRESULT findText ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOPTIONSHOLDER_ANYTHINGAFTERFRAMESET)] HRESULT anythingAfterFrameset ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_ANYTHINGAFTERFRAMESET)] HRESULT anythingAfterFrameset ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLOPTIONSHOLDER_SIZES)] HRESULT sizes ([in] BSTR fontName,[retval, out] IHTMLFontSizesCollection **pSizesCollection);
    [id (DISPID_IHTMLOPTIONSHOLDER_OPENFILEDLG)] HRESULT openfiledlg ([optional, in] VARIANT initFile,[optional, in] VARIANT initDir,[optional, in] VARIANT filter,[optional, in] VARIANT title,[retval, out] BSTR *pathName);
    [id (DISPID_IHTMLOPTIONSHOLDER_SAVEFILEDLG)] HRESULT savefiledlg ([optional, in] VARIANT initFile,[optional, in] VARIANT initDir,[optional, in] VARIANT filter,[optional, in] VARIANT title,[retval, out] BSTR *pathName);
    [id (DISPID_IHTMLOPTIONSHOLDER_CHOOSECOLORDLG)] HRESULT choosecolordlg ([optional, in] VARIANT initColor,[retval, out] long *rgbColor);
    [id (DISPID_IHTMLOPTIONSHOLDER_SHOWSECURITYINFO)] HRESULT showSecurityInfo ();
    [id (DISPID_IHTMLOPTIONSHOLDER_ISAPARTMENTMODEL)] HRESULT isApartmentModel ([in] IHTMLObjectElement *object,[retval, out] VARIANT_BOOL *fApartment);
    [id (DISPID_IHTMLOPTIONSHOLDER_GETCHARSET)] HRESULT getCharset ([in] BSTR fontName,[retval, out] long *charset);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_SECURECONNECTIONINFO)] HRESULT secureConnectionInfo ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f615-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLStyleElementEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS2_ONHELP)] VARIANT_BOOL onhelp ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCLICK)] VARIANT_BOOL onclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)] VARIANT_BOOL ondblclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)] VARIANT_BOOL onkeypress ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)] void onkeydown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONKEYUP)] void onkeyup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)] void onmouseout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)] void onmouseover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)] void onmousemove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)] void onmousedown ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)] void onmouseup ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)] VARIANT_BOOL onselectstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)] void onfilterchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)] VARIANT_BOOL ondragstart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)] void onlosecapture ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)] void onpropertychange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONSCROLL)] void onscroll ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUS)] void onfocus ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBLUR)] void onblur ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZE)] void onresize ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAG)] VARIANT_BOOL ondrag ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)] void ondragend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)] VARIANT_BOOL ondragenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)] VARIANT_BOOL ondragover ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)] void ondragleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDROP)] VARIANT_BOOL ondrop ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)] VARIANT_BOOL onbeforecut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCUT)] VARIANT_BOOL oncut ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCOPY)] VARIANT_BOOL oncopy ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPASTE)] VARIANT_BOOL onpaste ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)] void onlayoutcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONPAGE)] void onpage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)] void onmouseenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)] void onmouseleave ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)] void onactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)] void ondeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)] void onfocusin ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)] void onfocusout ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVE)] void onmove ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)] VARIANT_BOOL onmovestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)] void onmoveend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)] VARIANT_BOOL onresizestart ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)] void onresizeend ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLSTYLEELEMENTEVENTS2_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLSTYLEELEMENTEVENTS2_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f3cb-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLStyleElementEvents {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS_ONHELP)] VARIANT_BOOL onhelp ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCLICK)] VARIANT_BOOL onclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)] VARIANT_BOOL ondblclick ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)] VARIANT_BOOL onkeypress ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)] void onkeydown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONKEYUP)] void onkeyup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)] void onmouseout ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)] void onmouseover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)] void onmousemove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)] void onmousedown ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)] void onmouseup ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)] VARIANT_BOOL onselectstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)] void onfilterchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)] VARIANT_BOOL ondragstart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)] void onlosecapture ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)] void onpropertychange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONSCROLL)] void onscroll ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUS)] void onfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBLUR)] void onblur ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZE)] void onresize ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAG)] VARIANT_BOOL ondrag ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGEND)] void ondragend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)] VARIANT_BOOL ondragenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)] VARIANT_BOOL ondragover ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)] void ondragleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDROP)] VARIANT_BOOL ondrop ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)] VARIANT_BOOL onbeforecut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCUT)] VARIANT_BOOL oncut ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)] VARIANT_BOOL onbeforecopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCOPY)] VARIANT_BOOL oncopy ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)] VARIANT_BOOL onbeforepaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPASTE)] VARIANT_BOOL onpaste ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)] VARIANT_BOOL oncontextmenu ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)] void onbeforeeditfocus ();
    [id (DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)] void onlayoutcomplete ();
    [id (DISPID_HTMLELEMENTEVENTS_ONPAGE)] void onpage ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)] VARIANT_BOOL onbeforedeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)] VARIANT_BOOL onbeforeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVE)] void onmove ();
    [id (DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)] VARIANT_BOOL oncontrolselect ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVESTART)] VARIANT_BOOL onmovestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOVEEND)] void onmoveend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)] VARIANT_BOOL onresizestart ();
    [id (DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)] void onresizeend ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)] void onmouseenter ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)] void onmouseleave ();
    [id (DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)] VARIANT_BOOL onmousewheel ();
    [id (DISPID_HTMLELEMENTEVENTS_ONACTIVATE)] void onactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)] void ondeactivate ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)] void onfocusin ();
    [id (DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)] void onfocusout ();
    [id (DISPID_HTMLSTYLEELEMENTEVENTS_ONLOAD)] void onload ();
    [id (DISPID_HTMLSTYLEELEMENTEVENTS_ONERROR)] void onerror ();
  };
  [odl, oleautomation, dual, uuid (3050f375-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleElement : IDispatch {
    [propput, id (DISPID_IHTMLSTYLEELEMENT_TYPE), displaybind, bindable] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLEELEMENT_TYPE), displaybind, bindable] HRESULT type ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLSTYLEELEMENT_READYSTATE)] HRESULT readyState ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLEELEMENT_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLEELEMENT_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLEELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLEELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLEELEMENT_ONERROR), displaybind, bindable] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLEELEMENT_ONERROR), displaybind, bindable] HRESULT onerror ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLSTYLEELEMENT_STYLESHEET)] HRESULT styleSheet ([retval, out] IHTMLStyleSheet **p);
    [propput, id (DISPID_IHTMLSTYLEELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLEELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLSTYLEELEMENT_MEDIA), displaybind, bindable] HRESULT media ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLEELEMENT_MEDIA), displaybind, bindable] HRESULT media ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3051072a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleElement2 : IDispatch {
    [propget, id (DISPID_IHTMLSTYLEELEMENT2_SHEET)] HRESULT sheet ([retval, out] IHTMLStyleSheet **p);
  };
  [hidden, uuid (3050f511-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLStyleElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLSTYLEELEMENT_TYPE), displaybind, bindable] void type (BSTR v);
    [propget, id (DISPID_IHTMLSTYLEELEMENT_TYPE), displaybind, bindable] BSTR type ();
    [propget, id (DISPID_IHTMLSTYLEELEMENT_STYLESHEET)] IHTMLStyleSheet *styleSheet ();
    [propput, id (DISPID_IHTMLSTYLEELEMENT_MEDIA), displaybind, bindable] void media (BSTR v);
    [propget, id (DISPID_IHTMLSTYLEELEMENT_MEDIA), displaybind, bindable] BSTR media ();
    [propget, id (DISPID_IHTMLSTYLEELEMENT2_SHEET)] IHTMLStyleSheet *sheet ();
  };
  [noncreatable, uuid (3050f37d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStyleElement {
    [default] dispinterface DispHTMLStyleElement;
    [source, default] dispinterface HTMLStyleElementEvents;
    [source] dispinterface HTMLStyleElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLStyleElement;
    interface IHTMLStyleElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStyleElement;")
  [odl, oleautomation, dual, uuid (3050f3d5-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleFontFace : IDispatch {
    [propput, id (DISPID_IHTMLSTYLEFONTFACE_FONTSRC), displaybind, bindable] HRESULT fontsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLEFONTFACE_FONTSRC), displaybind, bindable] HRESULT fontsrc ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305106ec-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleFontFace2 : IDispatch {
    [propget, id (DISPID_IHTMLSTYLEFONTFACE2_STYLE), nonbrowsable] HRESULT style ([retval, out] IHTMLRuleStyle **p);
  };
  [hidden, uuid (30590081-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLStyleFontFace {
    properties:
    methods:
    [propget, id (DISPID_IHTMLCSSRULE_TYPE)] USHORT type ();
    [propput, id (DISPID_IHTMLCSSRULE_CSSTEXT)] void cssText (BSTR v);
    [propget, id (DISPID_IHTMLCSSRULE_CSSTEXT)] BSTR cssText ();
    [propget, id (DISPID_IHTMLCSSRULE_PARENTRULE)] IHTMLCSSRule *parentRule ();
    [propget, id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET)] IHTMLStyleSheet *parentStyleSheet ();
    [propput, id (DISPID_IHTMLSTYLEFONTFACE_FONTSRC), displaybind, bindable] void fontsrc (BSTR v);
    [propget, id (DISPID_IHTMLSTYLEFONTFACE_FONTSRC), displaybind, bindable] BSTR fontsrc ();
    [propget, id (DISPID_IHTMLSTYLEFONTFACE2_STYLE), nonbrowsable] IHTMLRuleStyle *style ();
  };
  [noncreatable, uuid (3050f3d4-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStyleFontFace {
    [default] dispinterface DispHTMLStyleFontFace;
    interface IHTMLCSSRule;
    interface IHTMLStyleFontFace;
    interface IHTMLStyleFontFace2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CFontFace;")
  [odl, oleautomation, dual, uuid (30510454-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLXDomainRequest : IDispatch {
    [propget, id (DISPID_IHTMLXDOMAINREQUEST_RESPONSETEXT)] HRESULT responseText ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLXDOMAINREQUEST_TIMEOUT)] HRESULT timeout ([in] long v);
    [propget, id (DISPID_IHTMLXDOMAINREQUEST_TIMEOUT)] HRESULT timeout ([retval, out] long *p);
    [propget, id (DISPID_IHTMLXDOMAINREQUEST_CONTENTTYPE)] HRESULT contentType ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLXDOMAINREQUEST_ONPROGRESS)] HRESULT onprogress ([in] VARIANT v);
    [propget, id (DISPID_IHTMLXDOMAINREQUEST_ONPROGRESS)] HRESULT onprogress ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLXDOMAINREQUEST_ONERROR)] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLXDOMAINREQUEST_ONERROR)] HRESULT onerror ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLXDOMAINREQUEST_ONTIMEOUT)] HRESULT ontimeout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLXDOMAINREQUEST_ONTIMEOUT)] HRESULT ontimeout ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLXDOMAINREQUEST_ONLOAD)] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLXDOMAINREQUEST_ONLOAD)] HRESULT onload ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLXDOMAINREQUEST_ABORT)] HRESULT abort ();
    [id (DISPID_IHTMLXDOMAINREQUEST_OPEN)] HRESULT open ([in] BSTR bstrMethod,[in] BSTR bstrUrl);
    [id (DISPID_IHTMLXDOMAINREQUEST_SEND)] HRESULT send ([optional, in] VARIANT varBody);
  };
  [odl, oleautomation, dual, uuid (30510456-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLXDomainRequestFactory : IDispatch {
    [id (DISPID_IHTMLXDOMAINREQUESTFACTORY_CREATE)] HRESULT create ([retval, out] IHTMLXDomainRequest **);
  };
  [hidden, uuid (3050f599-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispXDomainRequest {
    properties:
    methods:
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (30510455-98b5-11cf-bb82-00aa00bdce0b)] coclass XDomainRequest {
    [default] dispinterface DispXDomainRequest;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CXDomainRequest;")
  [noncreatable, uuid (30510457-98b5-11cf-bb82-00aa00bdce0b)] coclass XDomainRequestFactory {
    [default] interface IHTMLXDomainRequestFactory;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CXDomainRequestFactory;")
  [odl, oleautomation, dual, uuid (30510474-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStorage : IDispatch {
    [propget, id (DISPID_IHTMLSTORAGE_LENGTH), hidden] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSTORAGE_REMAININGSPACE), hidden] HRESULT remainingSpace ([retval, out] long *p);
    [id (DISPID_IHTMLSTORAGE_KEY)] HRESULT key ([in] long lIndex,[retval, out] BSTR *);
    [id (DISPID_IHTMLSTORAGE_GETITEM)] HRESULT getItem ([in] BSTR bstrKey,[retval, out] VARIANT *);
    [id (DISPID_IHTMLSTORAGE_SETITEM)] HRESULT setItem ([in] BSTR bstrKey,[in] BSTR bstrValue);
    [id (DISPID_IHTMLSTORAGE_REMOVEITEM)] HRESULT removeItem ([in] BSTR bstrKey);
    [id (DISPID_IHTMLSTORAGE_CLEAR)] HRESULT clear ();
  };
  [odl, oleautomation, dual, uuid (30510799-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStorage2 : IDispatch {
    [id (DISPID_IHTMLSTORAGE2_IE9_SETITEM)] HRESULT setItem ([in] BSTR bstrKey,[in] BSTR bstrValue);
  };
  [hidden, uuid (3050f59d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLStorage {
    properties:
    methods:
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propget, id (DISPID_IHTMLSTORAGE_LENGTH), hidden] long length ();
    [propget, id (DISPID_IHTMLSTORAGE_REMAININGSPACE), hidden] long remainingSpace ();
    [id (DISPID_IHTMLSTORAGE_KEY)] BSTR key ([in] long lIndex);
    [id (DISPID_IHTMLSTORAGE_GETITEM)] VARIANT getItem ([in] BSTR bstrKey);
    [id (DISPID_IHTMLSTORAGE_SETITEM)] void setItem ([in] BSTR bstrKey,[in] BSTR bstrValue);
    [id (DISPID_IHTMLSTORAGE_REMOVEITEM)] void removeItem ([in] BSTR bstrKey);
    [id (DISPID_IHTMLSTORAGE_CLEAR)] void clear ();
    [id (DISPID_IHTMLSTORAGE2_IE9_SETITEM)] void ie9_setItem ([in] BSTR bstrKey,[in] BSTR bstrValue);
  };
  [noncreatable, uuid (30510475-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStorage {
    [default] dispinterface DispHTMLStorage;
    interface IHTMLDOMConstructor;
    interface IHTMLStorage;
    interface IHTMLStorage2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStorage;")
  [odl, oleautomation, dual, uuid (305104b9-98b5-11cf-bb82-00aa00bdce0b)] interface IEventTarget : IDispatch {
    [id (DISPID_IEVENTTARGET_ADDEVENTLISTENER)] HRESULT addEventListener ([in] BSTR type,[in] IDispatch *listener,[in] VARIANT_BOOL useCapture);
    [id (DISPID_IEVENTTARGET_REMOVEEVENTLISTENER)] HRESULT removeEventListener ([in] BSTR type,[in] IDispatch *listener,[in] VARIANT_BOOL useCapture);
    [id (DISPID_IEVENTTARGET_DISPATCHEVENT)] HRESULT dispatchEvent ([in] IDOMEvent *evt,[retval, out] VARIANT_BOOL *pfResult);
  };
  [odl, oleautomation, dual, uuid (305104ba-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMEvent : IDispatch {
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] HRESULT bubbles ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] HRESULT cancelable ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] HRESULT currentTarget ([retval, out] IEventTarget **p);
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] HRESULT defaultPrevented ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] HRESULT eventPhase ([retval, out] USHORT *p);
    [propget, id (DISPID_IDOMEVENT_TARGET)] HRESULT target ([retval, out] IEventTarget **p);
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] HRESULT timeStamp ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IDOMEVENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [id (DISPID_IDOMEVENT_INITEVENT)] HRESULT initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] HRESULT preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] HRESULT stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] HRESULT stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] HRESULT isTrusted ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] HRESULT cancelBubble ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] HRESULT cancelBubble ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] HRESULT srcElement ([retval, out] IHTMLElement **p);
  };
  [hidden, uuid (3050f5a2-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
  };
  [noncreatable, uuid (305104bb-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMEvent {
    [default] dispinterface DispDOMEvent;
    interface IDOMEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMEvent;")
  [odl, oleautomation, dual, uuid (305106ca-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMUIEvent : IDispatch {
    [propget, id (DISPID_IDOMUIEVENT_VIEW)] HRESULT view ([retval, out] IHTMLWindow2 **p);
    [propget, id (DISPID_IDOMUIEVENT_DETAIL)] HRESULT detail ([retval, out] long *p);
    [id (DISPID_IDOMUIEVENT_INITUIEVENT)] HRESULT initUIEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *view,[in] long detail);
  };
  [hidden, uuid (30590072-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMUIEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMUIEVENT_VIEW)] IHTMLWindow2 *view ();
    [propget, id (DISPID_IDOMUIEVENT_DETAIL)] long detail ();
    [id (DISPID_IDOMUIEVENT_INITUIEVENT)] void initUIEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *view,[in] long detail);
  };
  [noncreatable, uuid (305106cb-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMUIEvent {
    [default] dispinterface DispDOMUIEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMUIEvent;")
  [odl, oleautomation, dual, uuid (305106ce-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMMouseEvent : IDispatch {
    [propget, id (DISPID_IDOMMOUSEEVENT_SCREENX)] HRESULT screenX ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_SCREENY)] HRESULT screenY ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_CLIENTX)] HRESULT clientX ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_CLIENTY)] HRESULT clientY ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_CTRLKEY)] HRESULT ctrlKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_SHIFTKEY)] HRESULT shiftKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_ALTKEY)] HRESULT altKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_METAKEY)] HRESULT metaKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_BUTTON)] HRESULT button ([retval, out] USHORT *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_RELATEDTARGET)] HRESULT relatedTarget ([retval, out] IEventTarget **p);
    [id (DISPID_IDOMMOUSEEVENT_INITMOUSEEVENT)] HRESULT initMouseEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] long detailArg,[in] long screenXArg,[in] long screenYArg,[in] long clientXArg,[in] long clientYArg,[in] VARIANT_BOOL ctrlKeyArg,[in] VARIANT_BOOL altKeyArg,[in] VARIANT_BOOL shiftKeyArg,[in] VARIANT_BOOL metaKeyArg,[in] USHORT buttonArg,[in] IEventTarget *relatedTargetArg);
    [id (DISPID_IDOMMOUSEEVENT_GETMODIFIERSTATE)] HRESULT getModifierState ([in] BSTR keyArg,[retval, out] VARIANT_BOOL *activated);
    [propget, id (DISPID_IDOMMOUSEEVENT_BUTTONS)] HRESULT buttons ([retval, out] USHORT *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_FROMELEMENT)] HRESULT fromElement ([retval, out] IHTMLElement **p);
    [propget, id (DISPID_IDOMMOUSEEVENT_TOELEMENT)] HRESULT toElement ([retval, out] IHTMLElement **p);
    [propget, id (DISPID_IDOMMOUSEEVENT_X)] HRESULT x ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_Y)] HRESULT y ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_OFFSETX)] HRESULT offsetX ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_OFFSETY)] HRESULT offsetY ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_PAGEX)] HRESULT pageX ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_PAGEY)] HRESULT pageY ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_LAYERX)] HRESULT layerX ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_LAYERY)] HRESULT layerY ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_WHICH)] HRESULT which ([retval, out] USHORT *p);
  };
  [hidden, uuid (30590073-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMMouseEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMUIEVENT_VIEW)] IHTMLWindow2 *view ();
    [propget, id (DISPID_IDOMUIEVENT_DETAIL)] long detail ();
    [id (DISPID_IDOMUIEVENT_INITUIEVENT)] void initUIEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *view,[in] long detail);
    [propget, id (DISPID_IDOMMOUSEEVENT_SCREENX)] long screenX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_SCREENY)] long screenY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_CLIENTX)] long clientX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_CLIENTY)] long clientY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_CTRLKEY)] VARIANT_BOOL ctrlKey ();
    [propget, id (DISPID_IDOMMOUSEEVENT_SHIFTKEY)] VARIANT_BOOL shiftKey ();
    [propget, id (DISPID_IDOMMOUSEEVENT_ALTKEY)] VARIANT_BOOL altKey ();
    [propget, id (DISPID_IDOMMOUSEEVENT_METAKEY)] VARIANT_BOOL metaKey ();
    [propget, id (DISPID_IDOMMOUSEEVENT_BUTTON)] USHORT button ();
    [propget, id (DISPID_IDOMMOUSEEVENT_RELATEDTARGET)] IEventTarget *relatedTarget ();
    [id (DISPID_IDOMMOUSEEVENT_INITMOUSEEVENT)] void initMouseEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] long detailArg,[in] long screenXArg,[in] long screenYArg,[in] long clientXArg,[in] long clientYArg,[in] VARIANT_BOOL ctrlKeyArg,[in] VARIANT_BOOL altKeyArg,[in] VARIANT_BOOL shiftKeyArg,[in] VARIANT_BOOL metaKeyArg,[in] USHORT buttonArg,[in] IEventTarget *relatedTargetArg);
    [id (DISPID_IDOMMOUSEEVENT_GETMODIFIERSTATE)] VARIANT_BOOL getModifierState ([in] BSTR keyArg);
    [propget, id (DISPID_IDOMMOUSEEVENT_BUTTONS)] USHORT buttons ();
    [propget, id (DISPID_IDOMMOUSEEVENT_FROMELEMENT)] IHTMLElement *fromElement ();
    [propget, id (DISPID_IDOMMOUSEEVENT_TOELEMENT)] IHTMLElement *toElement ();
    [propget, id (DISPID_IDOMMOUSEEVENT_X)] long x ();
    [propget, id (DISPID_IDOMMOUSEEVENT_Y)] long y ();
    [propget, id (DISPID_IDOMMOUSEEVENT_OFFSETX)] long offsetX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_OFFSETY)] long offsetY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_PAGEX)] long pageX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_PAGEY)] long pageY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_LAYERX)] long layerX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_LAYERY)] long layerY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_WHICH)] USHORT which ();
  };
  [noncreatable, uuid (305106cf-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMMouseEvent {
    [default] dispinterface DispDOMMouseEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMMouseEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMMouseEvent;")
  [odl, oleautomation, dual, uuid (30510761-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMDragEvent : IDispatch {
    [propget, id (DISPID_IDOMDRAGEVENT_DATATRANSFER)] HRESULT dataTransfer ([retval, out] IHTMLDataTransfer **p);
    [id (DISPID_IDOMDRAGEVENT_INITDRAGEVENT)] HRESULT initDragEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] long detailArg,[in] long screenXArg,[in] long screenYArg,[in] long clientXArg,[in] long clientYArg,[in] VARIANT_BOOL ctrlKeyArg,[in] VARIANT_BOOL altKeyArg,[in] VARIANT_BOOL shiftKeyArg,[in] VARIANT_BOOL metaKeyArg,[in] USHORT buttonArg,[in] IEventTarget *relatedTargetArg,[in] IHTMLDataTransfer *dataTransferArg);
  };
  [hidden, uuid (305900a7-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMDragEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMUIEVENT_VIEW)] IHTMLWindow2 *view ();
    [propget, id (DISPID_IDOMUIEVENT_DETAIL)] long detail ();
    [id (DISPID_IDOMUIEVENT_INITUIEVENT)] void initUIEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *view,[in] long detail);
    [propget, id (DISPID_IDOMMOUSEEVENT_SCREENX)] long screenX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_SCREENY)] long screenY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_CLIENTX)] long clientX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_CLIENTY)] long clientY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_CTRLKEY)] VARIANT_BOOL ctrlKey ();
    [propget, id (DISPID_IDOMMOUSEEVENT_SHIFTKEY)] VARIANT_BOOL shiftKey ();
    [propget, id (DISPID_IDOMMOUSEEVENT_ALTKEY)] VARIANT_BOOL altKey ();
    [propget, id (DISPID_IDOMMOUSEEVENT_METAKEY)] VARIANT_BOOL metaKey ();
    [propget, id (DISPID_IDOMMOUSEEVENT_BUTTON)] USHORT button ();
    [propget, id (DISPID_IDOMMOUSEEVENT_RELATEDTARGET)] IEventTarget *relatedTarget ();
    [id (DISPID_IDOMMOUSEEVENT_INITMOUSEEVENT)] void initMouseEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] long detailArg,[in] long screenXArg,[in] long screenYArg,[in] long clientXArg,[in] long clientYArg,[in] VARIANT_BOOL ctrlKeyArg,[in] VARIANT_BOOL altKeyArg,[in] VARIANT_BOOL shiftKeyArg,[in] VARIANT_BOOL metaKeyArg,[in] USHORT buttonArg,[in] IEventTarget *relatedTargetArg);
    [id (DISPID_IDOMMOUSEEVENT_GETMODIFIERSTATE)] VARIANT_BOOL getModifierState ([in] BSTR keyArg);
    [propget, id (DISPID_IDOMMOUSEEVENT_BUTTONS)] USHORT buttons ();
    [propget, id (DISPID_IDOMMOUSEEVENT_FROMELEMENT)] IHTMLElement *fromElement ();
    [propget, id (DISPID_IDOMMOUSEEVENT_TOELEMENT)] IHTMLElement *toElement ();
    [propget, id (DISPID_IDOMMOUSEEVENT_X)] long x ();
    [propget, id (DISPID_IDOMMOUSEEVENT_Y)] long y ();
    [propget, id (DISPID_IDOMMOUSEEVENT_OFFSETX)] long offsetX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_OFFSETY)] long offsetY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_PAGEX)] long pageX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_PAGEY)] long pageY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_LAYERX)] long layerX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_LAYERY)] long layerY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_WHICH)] USHORT which ();
    [propget, id (DISPID_IDOMDRAGEVENT_DATATRANSFER)] IHTMLDataTransfer *dataTransfer ();
    [id (DISPID_IDOMDRAGEVENT_INITDRAGEVENT)] void initDragEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] long detailArg,[in] long screenXArg,[in] long screenYArg,[in] long clientXArg,[in] long clientYArg,[in] VARIANT_BOOL ctrlKeyArg,[in] VARIANT_BOOL altKeyArg,[in] VARIANT_BOOL shiftKeyArg,[in] VARIANT_BOOL metaKeyArg,[in] USHORT buttonArg,[in] IEventTarget *relatedTargetArg,[in] IHTMLDataTransfer *dataTransferArg);
  };
  [noncreatable, uuid (30510762-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMDragEvent {
    [default] dispinterface DispDOMDragEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMMouseEvent;
    interface IDOMDragEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMDragEvent;")
  [odl, oleautomation, dual, uuid (305106d0-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMMouseWheelEvent : IDispatch {
    [propget, id (DISPID_IDOMMOUSEWHEELEVENT_WHEELDELTA)] HRESULT wheelDelta ([retval, out] long *p);
    [id (DISPID_IDOMMOUSEWHEELEVENT_INITMOUSEWHEELEVENT)] HRESULT initMouseWheelEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] long detailArg,[in] long screenXArg,[in] long screenYArg,[in] long clientXArg,[in] long clientYArg,[in] USHORT buttonArg,[in] IEventTarget *relatedTargetArg,[in] BSTR modifiersListArg,[in] long wheelDeltaArg);
  };
  [hidden, uuid (30590074-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMMouseWheelEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMUIEVENT_VIEW)] IHTMLWindow2 *view ();
    [propget, id (DISPID_IDOMUIEVENT_DETAIL)] long detail ();
    [id (DISPID_IDOMUIEVENT_INITUIEVENT)] void initUIEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *view,[in] long detail);
    [propget, id (DISPID_IDOMMOUSEEVENT_SCREENX)] long screenX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_SCREENY)] long screenY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_CLIENTX)] long clientX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_CLIENTY)] long clientY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_CTRLKEY)] VARIANT_BOOL ctrlKey ();
    [propget, id (DISPID_IDOMMOUSEEVENT_SHIFTKEY)] VARIANT_BOOL shiftKey ();
    [propget, id (DISPID_IDOMMOUSEEVENT_ALTKEY)] VARIANT_BOOL altKey ();
    [propget, id (DISPID_IDOMMOUSEEVENT_METAKEY)] VARIANT_BOOL metaKey ();
    [propget, id (DISPID_IDOMMOUSEEVENT_BUTTON)] USHORT button ();
    [propget, id (DISPID_IDOMMOUSEEVENT_RELATEDTARGET)] IEventTarget *relatedTarget ();
    [id (DISPID_IDOMMOUSEEVENT_INITMOUSEEVENT)] void initMouseEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] long detailArg,[in] long screenXArg,[in] long screenYArg,[in] long clientXArg,[in] long clientYArg,[in] VARIANT_BOOL ctrlKeyArg,[in] VARIANT_BOOL altKeyArg,[in] VARIANT_BOOL shiftKeyArg,[in] VARIANT_BOOL metaKeyArg,[in] USHORT buttonArg,[in] IEventTarget *relatedTargetArg);
    [id (DISPID_IDOMMOUSEEVENT_GETMODIFIERSTATE)] VARIANT_BOOL getModifierState ([in] BSTR keyArg);
    [propget, id (DISPID_IDOMMOUSEEVENT_BUTTONS)] USHORT buttons ();
    [propget, id (DISPID_IDOMMOUSEEVENT_FROMELEMENT)] IHTMLElement *fromElement ();
    [propget, id (DISPID_IDOMMOUSEEVENT_TOELEMENT)] IHTMLElement *toElement ();
    [propget, id (DISPID_IDOMMOUSEEVENT_X)] long x ();
    [propget, id (DISPID_IDOMMOUSEEVENT_Y)] long y ();
    [propget, id (DISPID_IDOMMOUSEEVENT_OFFSETX)] long offsetX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_OFFSETY)] long offsetY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_PAGEX)] long pageX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_PAGEY)] long pageY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_LAYERX)] long layerX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_LAYERY)] long layerY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_WHICH)] USHORT which ();
    [propget, id (DISPID_IDOMMOUSEWHEELEVENT_WHEELDELTA)] long wheelDelta ();
    [id (DISPID_IDOMMOUSEWHEELEVENT_INITMOUSEWHEELEVENT)] void initMouseWheelEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] long detailArg,[in] long screenXArg,[in] long screenYArg,[in] long clientXArg,[in] long clientYArg,[in] USHORT buttonArg,[in] IEventTarget *relatedTargetArg,[in] BSTR modifiersListArg,[in] long wheelDeltaArg);
  };
  [noncreatable, uuid (305106d1-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMMouseWheelEvent {
    [default] dispinterface DispDOMMouseWheelEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMMouseEvent;
    interface IDOMMouseWheelEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMMouseWheelEvent;")
  [odl, oleautomation, dual, uuid (305106d2-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMWheelEvent : IDispatch {
    [propget, id (DISPID_IDOMWHEELEVENT_DELTAX)] HRESULT deltaX ([retval, out] long *p);
    [propget, id (DISPID_IDOMWHEELEVENT_DELTAY)] HRESULT deltaY ([retval, out] long *p);
    [propget, id (DISPID_IDOMWHEELEVENT_DELTAZ)] HRESULT deltaZ ([retval, out] long *p);
    [propget, id (DISPID_IDOMWHEELEVENT_DELTAMODE)] HRESULT deltaMode ([retval, out] ULONG *p);
    [id (DISPID_IDOMWHEELEVENT_INITWHEELEVENT)] HRESULT initWheelEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] long detailArg,[in] long screenXArg,[in] long screenYArg,[in] long clientXArg,[in] long clientYArg,[in] USHORT buttonArg,[in] IEventTarget *relatedTargetArg,[in] BSTR modifiersListArg,[in] long deltaX,[in] long deltaY,[in] long deltaZ,[in] ULONG deltaMode);
  };
  [hidden, uuid (30590075-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMWheelEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMUIEVENT_VIEW)] IHTMLWindow2 *view ();
    [propget, id (DISPID_IDOMUIEVENT_DETAIL)] long detail ();
    [id (DISPID_IDOMUIEVENT_INITUIEVENT)] void initUIEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *view,[in] long detail);
    [propget, id (DISPID_IDOMMOUSEEVENT_SCREENX)] long screenX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_SCREENY)] long screenY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_CLIENTX)] long clientX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_CLIENTY)] long clientY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_CTRLKEY)] VARIANT_BOOL ctrlKey ();
    [propget, id (DISPID_IDOMMOUSEEVENT_SHIFTKEY)] VARIANT_BOOL shiftKey ();
    [propget, id (DISPID_IDOMMOUSEEVENT_ALTKEY)] VARIANT_BOOL altKey ();
    [propget, id (DISPID_IDOMMOUSEEVENT_METAKEY)] VARIANT_BOOL metaKey ();
    [propget, id (DISPID_IDOMMOUSEEVENT_BUTTON)] USHORT button ();
    [propget, id (DISPID_IDOMMOUSEEVENT_RELATEDTARGET)] IEventTarget *relatedTarget ();
    [id (DISPID_IDOMMOUSEEVENT_INITMOUSEEVENT)] void initMouseEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] long detailArg,[in] long screenXArg,[in] long screenYArg,[in] long clientXArg,[in] long clientYArg,[in] VARIANT_BOOL ctrlKeyArg,[in] VARIANT_BOOL altKeyArg,[in] VARIANT_BOOL shiftKeyArg,[in] VARIANT_BOOL metaKeyArg,[in] USHORT buttonArg,[in] IEventTarget *relatedTargetArg);
    [id (DISPID_IDOMMOUSEEVENT_GETMODIFIERSTATE)] VARIANT_BOOL getModifierState ([in] BSTR keyArg);
    [propget, id (DISPID_IDOMMOUSEEVENT_BUTTONS)] USHORT buttons ();
    [propget, id (DISPID_IDOMMOUSEEVENT_FROMELEMENT)] IHTMLElement *fromElement ();
    [propget, id (DISPID_IDOMMOUSEEVENT_TOELEMENT)] IHTMLElement *toElement ();
    [propget, id (DISPID_IDOMMOUSEEVENT_X)] long x ();
    [propget, id (DISPID_IDOMMOUSEEVENT_Y)] long y ();
    [propget, id (DISPID_IDOMMOUSEEVENT_OFFSETX)] long offsetX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_OFFSETY)] long offsetY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_PAGEX)] long pageX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_PAGEY)] long pageY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_LAYERX)] long layerX ();
    [propget, id (DISPID_IDOMMOUSEEVENT_LAYERY)] long layerY ();
    [propget, id (DISPID_IDOMMOUSEEVENT_WHICH)] USHORT which ();
    [propget, id (DISPID_IDOMWHEELEVENT_DELTAX)] long deltaX ();
    [propget, id (DISPID_IDOMWHEELEVENT_DELTAY)] long deltaY ();
    [propget, id (DISPID_IDOMWHEELEVENT_DELTAZ)] long deltaZ ();
    [propget, id (DISPID_IDOMWHEELEVENT_DELTAMODE)] ULONG deltaMode ();
    [id (DISPID_IDOMWHEELEVENT_INITWHEELEVENT)] void initWheelEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] long detailArg,[in] long screenXArg,[in] long screenYArg,[in] long clientXArg,[in] long clientYArg,[in] USHORT buttonArg,[in] IEventTarget *relatedTargetArg,[in] BSTR modifiersListArg,[in] long deltaX,[in] long deltaY,[in] long deltaZ,[in] ULONG deltaMode);
  };
  [noncreatable, uuid (305106d3-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMWheelEvent {
    [default] dispinterface DispDOMWheelEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMMouseEvent;
    interface IDOMWheelEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMWheelEvent;")
  [odl, oleautomation, dual, uuid (305106d4-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMTextEvent : IDispatch {
    [propget, id (DISPID_IDOMTEXTEVENT_DATA)] HRESULT data ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMTEXTEVENT_INPUTMETHOD)] HRESULT inputMethod ([retval, out] ULONG *p);
    [id (DISPID_IDOMTEXTEVENT_INITTEXTEVENT)] HRESULT initTextEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] BSTR dataArg,[in] ULONG inputMethod,[in] BSTR locale);
    [propget, id (DISPID_IDOMTEXTEVENT_LOCALE)] HRESULT locale ([retval, out] BSTR *p);
  };
  [hidden, uuid (30590076-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMTextEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMUIEVENT_VIEW)] IHTMLWindow2 *view ();
    [propget, id (DISPID_IDOMUIEVENT_DETAIL)] long detail ();
    [id (DISPID_IDOMUIEVENT_INITUIEVENT)] void initUIEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *view,[in] long detail);
    [propget, id (DISPID_IDOMTEXTEVENT_DATA)] BSTR data ();
    [propget, id (DISPID_IDOMTEXTEVENT_INPUTMETHOD)] ULONG inputMethod ();
    [id (DISPID_IDOMTEXTEVENT_INITTEXTEVENT)] void initTextEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] BSTR dataArg,[in] ULONG inputMethod,[in] BSTR locale);
    [propget, id (DISPID_IDOMTEXTEVENT_LOCALE)] BSTR locale ();
  };
  [noncreatable, uuid (305106d5-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMTextEvent {
    [default] dispinterface DispDOMTextEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMTextEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMTextEvent;")
  [odl, oleautomation, dual, uuid (305106d6-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMKeyboardEvent : IDispatch {
    [propget, id (DISPID_IDOMKEYBOARDEVENT_KEY)] HRESULT key ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_LOCATION)] HRESULT location ([retval, out] ULONG *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_CTRLKEY)] HRESULT ctrlKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_SHIFTKEY)] HRESULT shiftKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_ALTKEY)] HRESULT altKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_METAKEY)] HRESULT metaKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_REPEAT)] HRESULT repeat ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IDOMKEYBOARDEVENT_GETMODIFIERSTATE)] HRESULT getModifierState ([in] BSTR keyArg,[retval, out] VARIANT_BOOL *state);
    [id (DISPID_IDOMKEYBOARDEVENT_INITKEYBOARDEVENT)] HRESULT initKeyboardEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] BSTR keyArg,[in] ULONG locationArg,[in] BSTR modifiersListArg,[in] VARIANT_BOOL repeat,[in] BSTR locale);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_KEYCODE)] HRESULT keyCode ([retval, out] long *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_CHARCODE)] HRESULT charCode ([retval, out] long *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_WHICH)] HRESULT which ([retval, out] long *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_IE9_CHAR)] HRESULT ie9_char ([retval, out] VARIANT *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_LOCALE)] HRESULT locale ([retval, out] BSTR *p);
  };
  [hidden, uuid (30590077-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMKeyboardEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMUIEVENT_VIEW)] IHTMLWindow2 *view ();
    [propget, id (DISPID_IDOMUIEVENT_DETAIL)] long detail ();
    [id (DISPID_IDOMUIEVENT_INITUIEVENT)] void initUIEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *view,[in] long detail);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_KEY)] BSTR key ();
    [propget, id (DISPID_IDOMKEYBOARDEVENT_LOCATION)] ULONG location ();
    [propget, id (DISPID_IDOMKEYBOARDEVENT_CTRLKEY)] VARIANT_BOOL ctrlKey ();
    [propget, id (DISPID_IDOMKEYBOARDEVENT_SHIFTKEY)] VARIANT_BOOL shiftKey ();
    [propget, id (DISPID_IDOMKEYBOARDEVENT_ALTKEY)] VARIANT_BOOL altKey ();
    [propget, id (DISPID_IDOMKEYBOARDEVENT_METAKEY)] VARIANT_BOOL metaKey ();
    [propget, id (DISPID_IDOMKEYBOARDEVENT_REPEAT)] VARIANT_BOOL repeat ();
    [id (DISPID_IDOMKEYBOARDEVENT_GETMODIFIERSTATE)] VARIANT_BOOL getModifierState ([in] BSTR keyArg);
    [id (DISPID_IDOMKEYBOARDEVENT_INITKEYBOARDEVENT)] void initKeyboardEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] BSTR keyArg,[in] ULONG locationArg,[in] BSTR modifiersListArg,[in] VARIANT_BOOL repeat,[in] BSTR locale);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_KEYCODE)] long keyCode ();
    [propget, id (DISPID_IDOMKEYBOARDEVENT_CHARCODE)] long charCode ();
    [propget, id (DISPID_IDOMKEYBOARDEVENT_WHICH)] long which ();
    [propget, id (DISPID_IDOMKEYBOARDEVENT_IE9_CHAR)] VARIANT ie9_char ();
    [propget, id (DISPID_IDOMKEYBOARDEVENT_LOCALE)] BSTR locale ();
  };
  [noncreatable, uuid (305106d7-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMKeyboardEvent {
    [default] dispinterface DispDOMKeyboardEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMKeyboardEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMKeyboardEvent;")
  [odl, oleautomation, dual, uuid (305106d8-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMCompositionEvent : IDispatch {
    [propget, id (DISPID_IDOMCOMPOSITIONEVENT_DATA)] HRESULT data ([retval, out] BSTR *p);
    [id (DISPID_IDOMCOMPOSITIONEVENT_INITCOMPOSITIONEVENT)] HRESULT initCompositionEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] BSTR data,[in] BSTR locale);
    [propget, id (DISPID_IDOMCOMPOSITIONEVENT_LOCALE)] HRESULT locale ([retval, out] BSTR *p);
  };
  [hidden, uuid (30590078-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMCompositionEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMUIEVENT_VIEW)] IHTMLWindow2 *view ();
    [propget, id (DISPID_IDOMUIEVENT_DETAIL)] long detail ();
    [id (DISPID_IDOMUIEVENT_INITUIEVENT)] void initUIEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *view,[in] long detail);
    [propget, id (DISPID_IDOMCOMPOSITIONEVENT_DATA)] BSTR data ();
    [id (DISPID_IDOMCOMPOSITIONEVENT_INITCOMPOSITIONEVENT)] void initCompositionEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] BSTR data,[in] BSTR locale);
    [propget, id (DISPID_IDOMCOMPOSITIONEVENT_LOCALE)] BSTR locale ();
  };
  [noncreatable, uuid (305106d9-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMCompositionEvent {
    [default] dispinterface DispDOMCompositionEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMCompositionEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMCompositionEvent;")
  [odl, oleautomation, dual, uuid (305106da-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMMutationEvent : IDispatch {
    [propget, id (DISPID_IDOMMUTATIONEVENT_RELATEDNODE)] HRESULT relatedNode ([retval, out] IDispatch **p);
    [propget, id (DISPID_IDOMMUTATIONEVENT_PREVVALUE)] HRESULT prevValue ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMMUTATIONEVENT_NEWVALUE)] HRESULT newValue ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMMUTATIONEVENT_ATTRNAME)] HRESULT attrName ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMMUTATIONEVENT_ATTRCHANGE)] HRESULT attrChange ([retval, out] USHORT *p);
    [id (DISPID_IDOMMUTATIONEVENT_INITMUTATIONEVENT)] HRESULT initMutationEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IDispatch *relatedNodeArg,[in] BSTR prevValueArg,[in] BSTR newValueArg,[in] BSTR attrNameArg,[in] USHORT attrChangeArg);
  };
  [hidden, uuid (30590079-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMMutationEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMMUTATIONEVENT_RELATEDNODE)] IDispatch *relatedNode ();
    [propget, id (DISPID_IDOMMUTATIONEVENT_PREVVALUE)] BSTR prevValue ();
    [propget, id (DISPID_IDOMMUTATIONEVENT_NEWVALUE)] BSTR newValue ();
    [propget, id (DISPID_IDOMMUTATIONEVENT_ATTRNAME)] BSTR attrName ();
    [propget, id (DISPID_IDOMMUTATIONEVENT_ATTRCHANGE)] USHORT attrChange ();
    [id (DISPID_IDOMMUTATIONEVENT_INITMUTATIONEVENT)] void initMutationEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IDispatch *relatedNodeArg,[in] BSTR prevValueArg,[in] BSTR newValueArg,[in] BSTR attrNameArg,[in] USHORT attrChangeArg);
  };
  [noncreatable, uuid (305106db-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMMutationEvent {
    [default] dispinterface DispDOMMutationEvent;
    interface IDOMEvent;
    interface IDOMMutationEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMMutationEvent;")
  [odl, oleautomation, dual, uuid (30510763-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMBeforeUnloadEvent : IDispatch {
    [propput, id (DISPID_IDOMBEFOREUNLOADEVENT_RETURNVALUE)] HRESULT returnValue ([in] VARIANT v);
    [propget, id (DISPID_IDOMBEFOREUNLOADEVENT_RETURNVALUE)] HRESULT returnValue ([retval, out] VARIANT *p);
  };
  [hidden, uuid (305900a8-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMBeforeUnloadEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propput, id (DISPID_IDOMBEFOREUNLOADEVENT_RETURNVALUE)] void returnValue (VARIANT v);
    [propget, id (DISPID_IDOMBEFOREUNLOADEVENT_RETURNVALUE)] VARIANT returnValue ();
  };
  [noncreatable, uuid (30510764-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMBeforeUnloadEvent {
    [default] dispinterface DispDOMBeforeUnloadEvent;
    interface IDOMEvent;
    interface IDOMBeforeUnloadEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMBeforeUnloadEvent;")
  [odl, oleautomation, dual, uuid (305106cc-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMFocusEvent : IDispatch {
    [propget, id (DISPID_IDOMFOCUSEVENT_RELATEDTARGET)] HRESULT relatedTarget ([retval, out] IEventTarget **p);
    [id (DISPID_IDOMFOCUSEVENT_INITFOCUSEVENT)] HRESULT initFocusEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *view,[in] long detail,[in] IEventTarget *relatedTargetArg);
  };
  [hidden, uuid (30590071-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMFocusEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMUIEVENT_VIEW)] IHTMLWindow2 *view ();
    [propget, id (DISPID_IDOMUIEVENT_DETAIL)] long detail ();
    [id (DISPID_IDOMUIEVENT_INITUIEVENT)] void initUIEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *view,[in] long detail);
    [propget, id (DISPID_IDOMFOCUSEVENT_RELATEDTARGET)] IEventTarget *relatedTarget ();
    [id (DISPID_IDOMFOCUSEVENT_INITFOCUSEVENT)] void initFocusEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *view,[in] long detail,[in] IEventTarget *relatedTargetArg);
  };
  [noncreatable, uuid (305106cd-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMFocusEvent {
    [default] dispinterface DispDOMFocusEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMFocusEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMFocusEvent;")
  [odl, oleautomation, dual, uuid (305106de-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMCustomEvent : IDispatch {
    [propget, id (DISPID_IDOMCUSTOMEVENT_DETAIL)] HRESULT detail ([retval, out] VARIANT *p);
    [id (DISPID_IDOMCUSTOMEVENT_INITCUSTOMEVENT)] HRESULT initCustomEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] VARIANT *detail);
  };
  [hidden, uuid (3059007c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMCustomEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMCUSTOMEVENT_DETAIL)] VARIANT detail ();
    [id (DISPID_IDOMCUSTOMEVENT_INITCUSTOMEVENT)] void initCustomEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] VARIANT *detail);
  };
  [noncreatable, uuid (305106df-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMCustomEvent {
    [default] dispinterface DispDOMCustomEvent;
    interface IDOMEvent;
    interface IDOMCustomEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMCustomEvent;")
  [odl, oleautomation, dual, uuid (30510714-98b5-11cf-bb82-00aa00bdce0b)] interface ICanvasGradient : IDispatch {
    [id (DISPID_ICANVASGRADIENT_ADDCOLORSTOP)] HRESULT addColorStop ([in] float offset,[in] BSTR color);
  };
  [odl, oleautomation, dual, uuid (30510716-98b5-11cf-bb82-00aa00bdce0b)] interface ICanvasPattern : IDispatch {
  };
  [odl, oleautomation, dual, uuid (30510718-98b5-11cf-bb82-00aa00bdce0b)] interface ICanvasTextMetrics : IDispatch {
    [propget, id (DISPID_ICANVASTEXTMETRICS_WIDTH)] HRESULT width ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (3051071a-98b5-11cf-bb82-00aa00bdce0b)] interface ICanvasImageData : IDispatch {
    [propget, id (DISPID_ICANVASIMAGEDATA_WIDTH)] HRESULT width ([retval, out] ULONG *p);
    [propget, id (DISPID_ICANVASIMAGEDATA_HEIGHT)] HRESULT height ([retval, out] ULONG *p);
    [propget, id (DISPID_ICANVASIMAGEDATA_DATA)] HRESULT data ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (3051071c-98b5-11cf-bb82-00aa00bdce0b)] interface ICanvasPixelArray : IDispatch {
    [propget, id (DISPID_ICANVASPIXELARRAY_LENGTH)] HRESULT length ([retval, out] ULONG *p);
  };
  interface IHTMLCanvasElement;
  [odl, oleautomation, dual, uuid (305106ff-98b5-11cf-bb82-00aa00bdce0b)] interface ICanvasRenderingContext2D : IDispatch {
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_CANVAS)] HRESULT canvas ([retval, out] IHTMLCanvasElement **p);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_RESTORE)] HRESULT restore ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_SAVE)] HRESULT save ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_ROTATE)] HRESULT rotate ([in] float angle);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_SCALE)] HRESULT scale ([in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_SETTRANSFORM)] HRESULT setTransform ([in] float m11,[in] float m12,[in] float m21,[in] float m22,[in] float dx,[in] float dy);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_TRANSFORM)] HRESULT transform ([in] float m11,[in] float m12,[in] float m21,[in] float m22,[in] float dx,[in] float dy);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_TRANSLATE)] HRESULT translate ([in] float x,[in] float y);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_GLOBALALPHA)] HRESULT globalAlpha ([in] float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_GLOBALALPHA)] HRESULT globalAlpha ([retval, out] float *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_GLOBALCOMPOSITEOPERATION)] HRESULT globalCompositeOperation ([in] BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_GLOBALCOMPOSITEOPERATION)] HRESULT globalCompositeOperation ([retval, out] BSTR *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_FILLSTYLE)] HRESULT fillStyle ([in] VARIANT v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_FILLSTYLE)] HRESULT fillStyle ([retval, out] VARIANT *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKESTYLE)] HRESULT strokeStyle ([in] VARIANT v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKESTYLE)] HRESULT strokeStyle ([retval, out] VARIANT *p);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CREATELINEARGRADIENT)] HRESULT createLinearGradient ([in] float x0,[in] float y0,[in] float x1,[in] float y1,[retval, out] ICanvasGradient **ppCanvasGradient);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CREATERADIALGRADIENT)] HRESULT createRadialGradient ([in] float x0,[in] float y0,[in] float r0,[in] float x1,[in] float y1,[in] float r1,[retval, out] ICanvasGradient **ppCanvasGradient);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CREATEPATTERN)] HRESULT createPattern ([in] IDispatch *image,[in] VARIANT repetition,[retval, out] ICanvasPattern **ppCanvasPattern);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINECAP)] HRESULT lineCap ([in] BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINECAP)] HRESULT lineCap ([retval, out] BSTR *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINEJOIN)] HRESULT lineJoin ([in] BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINEJOIN)] HRESULT lineJoin ([retval, out] BSTR *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINEWIDTH)] HRESULT lineWidth ([in] float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINEWIDTH)] HRESULT lineWidth ([retval, out] float *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_MITERLIMIT)] HRESULT miterLimit ([in] float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_MITERLIMIT)] HRESULT miterLimit ([retval, out] float *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWBLUR)] HRESULT shadowBlur ([in] float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWBLUR)] HRESULT shadowBlur ([retval, out] float *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWCOLOR)] HRESULT shadowColor ([in] BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWCOLOR)] HRESULT shadowColor ([retval, out] BSTR *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWOFFSETX)] HRESULT shadowOffsetX ([in] float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWOFFSETX)] HRESULT shadowOffsetX ([retval, out] float *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWOFFSETY)] HRESULT shadowOffsetY ([in] float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWOFFSETY)] HRESULT shadowOffsetY ([retval, out] float *p);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CLEARRECT)] HRESULT clearRect ([in] float x,[in] float y,[in] float w,[in] float h);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_FILLRECT)] HRESULT fillRect ([in] float x,[in] float y,[in] float w,[in] float h);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKERECT)] HRESULT strokeRect ([in] float x,[in] float y,[in] float w,[in] float h);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_ARC)] HRESULT arc ([in] float x,[in] float y,[in] float radius,[in] float startAngle,[in] float endAngle,[in] BOOL anticlockwise);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_ARCTO)] HRESULT arcTo ([in] float x1,[in] float y1,[in] float x2,[in] float y2,[in] float radius);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_BEGINPATH)] HRESULT beginPath ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_BEZIERCURVETO)] HRESULT bezierCurveTo ([in] float cp1x,[in] float cp1y,[in] float cp2x,[in] float cp2y,[in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CLIP)] HRESULT clip ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CLOSEPATH)] HRESULT closePath ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_FILL)] HRESULT fill ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_LINETO)] HRESULT lineTo ([in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_MOVETO)] HRESULT moveTo ([in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_QUADRATICCURVETO)] HRESULT quadraticCurveTo ([in] float cpx,[in] float cpy,[in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_RECT)] HRESULT rect ([in] float x,[in] float y,[in] float w,[in] float h);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKE)] HRESULT stroke ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_ISPOINTINPATH)] HRESULT isPointInPath ([in] float x,[in] float y,[retval, out] VARIANT_BOOL *pResult);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_FONT)] HRESULT font ([in] BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_FONT)] HRESULT font ([retval, out] BSTR *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_TEXTALIGN)] HRESULT textAlign ([in] BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_TEXTALIGN)] HRESULT textAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_TEXTBASELINE)] HRESULT textBaseline ([in] BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_TEXTBASELINE)] HRESULT textBaseline ([retval, out] BSTR *p);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_FILLTEXT)] HRESULT fillText ([in] BSTR text,[in] float x,[in] float y,[in] VARIANT maxWidth);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_MEASURETEXT)] HRESULT measureText ([in] BSTR text,[retval, out] ICanvasTextMetrics **ppCanvasTextMetrics);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKETEXT)] HRESULT strokeText ([in] BSTR text,[in] float x,[in] float y,[in] VARIANT maxWidth);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_DRAWIMAGE)] HRESULT drawImage ([in] IDispatch *pSrc,[in] VARIANT a1,[in] VARIANT a2,[in] VARIANT a3,[in] VARIANT a4,[in] VARIANT a5,[in] VARIANT a6,[in] VARIANT a7,[in] VARIANT a8);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CREATEIMAGEDATA)] HRESULT createImageData ([in] VARIANT a1,[in] VARIANT a2,[retval, out] ICanvasImageData **ppCanvasImageData);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_GETIMAGEDATA)] HRESULT getImageData ([in] float sx,[in] float sy,[in] float sw,[in] float sh,[retval, out] ICanvasImageData **ppCanvasImageData);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_PUTIMAGEDATA)] HRESULT putImageData ([in] ICanvasImageData *imagedata,[in] float dx,[in] float dy,[in] VARIANT dirtyX,[in] VARIANT dirtyY,[in] VARIANT dirtyWidth,[in] VARIANT dirtyHeight);
  };
  [odl, oleautomation, dual, uuid (305106e4-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLCanvasElement : IDispatch {
    [propput, id (DISPID_IHTMLCANVASELEMENT_WIDTH)] HRESULT width ([in] long v);
    [propget, id (DISPID_IHTMLCANVASELEMENT_WIDTH)] HRESULT width ([retval, out] long *p);
    [propput, id (DISPID_IHTMLCANVASELEMENT_HEIGHT)] HRESULT height ([in] long v);
    [propget, id (DISPID_IHTMLCANVASELEMENT_HEIGHT)] HRESULT height ([retval, out] long *p);
    [id (DISPID_IHTMLCANVASELEMENT_GETCONTEXT)] HRESULT getContext ([in] BSTR contextId,[retval, out] ICanvasRenderingContext2D **ppContext);
    [id (DISPID_IHTMLCANVASELEMENT_TODATAURL)] HRESULT toDataURL ([in] BSTR type,[in] VARIANT jpegquality,[retval, out] BSTR *pUrl);
  };
  [hidden, uuid (3059008c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispCanvasGradient {
    properties:
    methods:
    [id (DISPID_ICANVASGRADIENT_ADDCOLORSTOP)] void addColorStop ([in] float offset,[in] BSTR color);
  };
  [noncreatable, uuid (30510715-98b5-11cf-bb82-00aa00bdce0b)] coclass CanvasGradient {
    [default] dispinterface DispCanvasGradient;
    interface ICanvasGradient;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CCanvasGradient;")
  [hidden, uuid (3059008d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispCanvasPattern {
    properties:
    methods:
  };
  [noncreatable, uuid (30510717-98b5-11cf-bb82-00aa00bdce0b)] coclass CanvasPattern {
    [default] dispinterface DispCanvasPattern;
    interface ICanvasPattern;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CCanvasPattern;")
  [hidden, uuid (3059008e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispCanvasTextMetrics {
    properties:
    methods:
    [propget, id (DISPID_ICANVASTEXTMETRICS_WIDTH)] float width ();
  };
  [noncreatable, uuid (30510719-98b5-11cf-bb82-00aa00bdce0b)] coclass CanvasTextMetrics {
    [default] dispinterface DispCanvasTextMetrics;
    interface ICanvasTextMetrics;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CCanvasTextMetrics;")
  [hidden, uuid (3059008f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispCanvasImageData {
    properties:
    methods:
    [propget, id (DISPID_ICANVASIMAGEDATA_WIDTH)] ULONG width ();
    [propget, id (DISPID_ICANVASIMAGEDATA_HEIGHT)] ULONG height ();
    [propget, id (DISPID_ICANVASIMAGEDATA_DATA)] VARIANT data ();
  };
  [noncreatable, uuid (3051071b-98b5-11cf-bb82-00aa00bdce0b)] coclass CanvasImageData {
    [default] dispinterface DispCanvasImageData;
    interface ICanvasImageData;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CCanvasImageData;")
  [hidden, uuid (30590082-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispCanvasRenderingContext2D {
    properties:
    methods:
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_CANVAS)] IHTMLCanvasElement *canvas ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_RESTORE)] void restore ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_SAVE)] void save ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_ROTATE)] void rotate ([in] float angle);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_SCALE)] void scale ([in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_SETTRANSFORM)] void setTransform ([in] float m11,[in] float m12,[in] float m21,[in] float m22,[in] float dx,[in] float dy);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_TRANSFORM)] void transform ([in] float m11,[in] float m12,[in] float m21,[in] float m22,[in] float dx,[in] float dy);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_TRANSLATE)] void translate ([in] float x,[in] float y);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_GLOBALALPHA)] void globalAlpha (float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_GLOBALALPHA)] float globalAlpha ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_GLOBALCOMPOSITEOPERATION)] void globalCompositeOperation (BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_GLOBALCOMPOSITEOPERATION)] BSTR globalCompositeOperation ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_FILLSTYLE)] void fillStyle (VARIANT v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_FILLSTYLE)] VARIANT fillStyle ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKESTYLE)] void strokeStyle (VARIANT v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKESTYLE)] VARIANT strokeStyle ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CREATELINEARGRADIENT)] ICanvasGradient *createLinearGradient ([in] float x0,[in] float y0,[in] float x1,[in] float y1);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CREATERADIALGRADIENT)] ICanvasGradient *createRadialGradient ([in] float x0,[in] float y0,[in] float r0,[in] float x1,[in] float y1,[in] float r1);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CREATEPATTERN)] ICanvasPattern *createPattern ([in] IDispatch *image,[in] VARIANT repetition);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINECAP)] void lineCap (BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINECAP)] BSTR lineCap ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINEJOIN)] void lineJoin (BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINEJOIN)] BSTR lineJoin ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINEWIDTH)] void lineWidth (float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINEWIDTH)] float lineWidth ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_MITERLIMIT)] void miterLimit (float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_MITERLIMIT)] float miterLimit ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWBLUR)] void shadowBlur (float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWBLUR)] float shadowBlur ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWCOLOR)] void shadowColor (BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWCOLOR)] BSTR shadowColor ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWOFFSETX)] void shadowOffsetX (float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWOFFSETX)] float shadowOffsetX ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWOFFSETY)] void shadowOffsetY (float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWOFFSETY)] float shadowOffsetY ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CLEARRECT)] void clearRect ([in] float x,[in] float y,[in] float w,[in] float h);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_FILLRECT)] void fillRect ([in] float x,[in] float y,[in] float w,[in] float h);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKERECT)] void strokeRect ([in] float x,[in] float y,[in] float w,[in] float h);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_ARC)] void arc ([in] float x,[in] float y,[in] float radius,[in] float startAngle,[in] float endAngle,[in] BOOL anticlockwise);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_ARCTO)] void arcTo ([in] float x1,[in] float y1,[in] float x2,[in] float y2,[in] float radius);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_BEGINPATH)] void beginPath ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_BEZIERCURVETO)] void bezierCurveTo ([in] float cp1x,[in] float cp1y,[in] float cp2x,[in] float cp2y,[in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CLIP)] void clip ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CLOSEPATH)] void closePath ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_FILL)] void fill ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_LINETO)] void lineTo ([in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_MOVETO)] void moveTo ([in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_QUADRATICCURVETO)] void quadraticCurveTo ([in] float cpx,[in] float cpy,[in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_RECT)] void rect ([in] float x,[in] float y,[in] float w,[in] float h);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKE)] void stroke ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_ISPOINTINPATH)] VARIANT_BOOL isPointInPath ([in] float x,[in] float y);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_FONT)] void font (BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_FONT)] BSTR font ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_TEXTALIGN)] void textAlign (BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_TEXTALIGN)] BSTR textAlign ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_TEXTBASELINE)] void textBaseline (BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_TEXTBASELINE)] BSTR textBaseline ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_FILLTEXT)] void fillText ([in] BSTR text,[in] float x,[in] float y,[in] VARIANT maxWidth);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_MEASURETEXT)] ICanvasTextMetrics *measureText ([in] BSTR text);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKETEXT)] void strokeText ([in] BSTR text,[in] float x,[in] float y,[in] VARIANT maxWidth);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_DRAWIMAGE)] void drawImage ([in] IDispatch *pSrc,[in] VARIANT a1,[in] VARIANT a2,[in] VARIANT a3,[in] VARIANT a4,[in] VARIANT a5,[in] VARIANT a6,[in] VARIANT a7,[in] VARIANT a8);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CREATEIMAGEDATA)] ICanvasImageData *createImageData ([in] VARIANT a1,[in] VARIANT a2);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_GETIMAGEDATA)] ICanvasImageData *getImageData ([in] float sx,[in] float sy,[in] float sw,[in] float sh);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_PUTIMAGEDATA)] void putImageData ([in] ICanvasImageData *imagedata,[in] float dx,[in] float dy,[in] VARIANT dirtyX,[in] VARIANT dirtyY,[in] VARIANT dirtyWidth,[in] VARIANT dirtyHeight);
  };
  [noncreatable, uuid (30510700-98b5-11cf-bb82-00aa00bdce0b)] coclass CanvasRenderingContext2D {
    [default] dispinterface DispCanvasRenderingContext2D;
    interface ICanvasRenderingContext2D;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CCanvasRenderingContext2D;")
  [hidden, uuid (3059007b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLCanvasElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLCANVASELEMENT_WIDTH)] void width (long v);
    [propget, id (DISPID_IHTMLCANVASELEMENT_WIDTH)] long width ();
    [propput, id (DISPID_IHTMLCANVASELEMENT_HEIGHT)] void height (long v);
    [propget, id (DISPID_IHTMLCANVASELEMENT_HEIGHT)] long height ();
    [id (DISPID_IHTMLCANVASELEMENT_GETCONTEXT)] ICanvasRenderingContext2D *getContext ([in] BSTR contextId);
    [id (DISPID_IHTMLCANVASELEMENT_TODATAURL)] BSTR toDataURL ([in] BSTR type,[in] VARIANT jpegquality);
  };
  [noncreatable, uuid (305106e5-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLCanvasElement {
    [default] dispinterface DispHTMLCanvasElement;
    [source, default] dispinterface HTMLElementEvents;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLCanvasElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CHTMLCanvasElement;")
  [odl, oleautomation, dual, uuid (3051071e-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMProgressEvent : IDispatch {
    [propget, id (DISPID_IDOMPROGRESSEVENT_LENGTHCOMPUTABLE)] HRESULT lengthComputable ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMPROGRESSEVENT_LOADED)] HRESULT loaded ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IDOMPROGRESSEVENT_TOTAL)] HRESULT total ([retval, out] ULONGLONG *p);
    [id (DISPID_IDOMPROGRESSEVENT_INITPROGRESSEVENT)] HRESULT initProgressEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] VARIANT_BOOL lengthComputableArg,[in] ULONGLONG loadedArg,[in] ULONGLONG totalArg);
  };
  [hidden, uuid (30590091-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMProgressEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMPROGRESSEVENT_LENGTHCOMPUTABLE)] VARIANT_BOOL lengthComputable ();
    [propget, id (DISPID_IDOMPROGRESSEVENT_LOADED)] ULONGLONG loaded ();
    [propget, id (DISPID_IDOMPROGRESSEVENT_TOTAL)] ULONGLONG total ();
    [id (DISPID_IDOMPROGRESSEVENT_INITPROGRESSEVENT)] void initProgressEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] VARIANT_BOOL lengthComputableArg,[in] ULONGLONG loadedArg,[in] ULONGLONG totalArg);
  };
  [noncreatable, uuid (3051071f-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMProgressEvent {
    [default] dispinterface DispDOMProgressEvent;
    interface IDOMEvent;
    interface IDOMProgressEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMProgressEvent;")
  [odl, oleautomation, dual, uuid (30510720-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMMessageEvent : IDispatch {
    [propget, id (DISPID_IDOMMESSAGEEVENT_DATA)] HRESULT data ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMMESSAGEEVENT_ORIGIN)] HRESULT origin ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMMESSAGEEVENT_SOURCE)] HRESULT source ([retval, out] IHTMLWindow2 **p);
    [id (DISPID_IDOMMESSAGEEVENT_INITMESSAGEEVENT)] HRESULT initMessageEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] BSTR data,[in] BSTR origin,[in] BSTR lastEventId,[in] IHTMLWindow2 *source);
  };
  [hidden, uuid (30590092-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMMessageEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMMESSAGEEVENT_DATA)] BSTR data ();
    [propget, id (DISPID_IDOMMESSAGEEVENT_ORIGIN)] BSTR origin ();
    [propget, id (DISPID_IDOMMESSAGEEVENT_SOURCE)] IHTMLWindow2 *source ();
    [id (DISPID_IDOMMESSAGEEVENT_INITMESSAGEEVENT)] void initMessageEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] BSTR data,[in] BSTR origin,[in] BSTR lastEventId,[in] IHTMLWindow2 *source);
  };
  [noncreatable, uuid (30510721-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMMessageEvent {
    [default] dispinterface DispDOMMessageEvent;
    interface IDOMEvent;
    interface IDOMMessageEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMMessageEvent;")
  [odl, oleautomation, dual, uuid (30510765-98b6-11cf-bb82-00aa00bdce0b)] interface IDOMSiteModeEvent : IDispatch {
    [propget, id (DISPID_IDOMSITEMODEEVENT_BUTTONID)] HRESULT buttonID ([retval, out] LONG *p);
    [propget, id (DISPID_IDOMSITEMODEEVENT_ACTIONURL)] HRESULT actionURL ([retval, out] BSTR *p);
  };
  [hidden, uuid (305900a9-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMSiteModeEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMSITEMODEEVENT_BUTTONID)] LONG buttonID ();
    [propget, id (DISPID_IDOMSITEMODEEVENT_ACTIONURL)] BSTR actionURL ();
  };
  [noncreatable, uuid (30510766-98b6-11cf-bb82-00aa00bdce0b)] coclass DOMSiteModeEvent {
    [default] dispinterface DispDOMSiteModeEvent;
    interface IDOMEvent;
    interface IDOMSiteModeEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMSiteModeEvent;")
  [odl, oleautomation, dual, uuid (30510722-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMStorageEvent : IDispatch {
    [propget, id (DISPID_IDOMSTORAGEEVENT_KEY)] HRESULT key ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMSTORAGEEVENT_OLDVALUE)] HRESULT oldValue ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMSTORAGEEVENT_NEWVALUE)] HRESULT newValue ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMSTORAGEEVENT_URL)] HRESULT url ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMSTORAGEEVENT_STORAGEAREA)] HRESULT storageArea ([retval, out] IHTMLStorage **p);
    [id (DISPID_IDOMSTORAGEEVENT_INITSTORAGEEVENT)] HRESULT initStorageEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] BSTR keyArg,[in] BSTR oldValueArg,[in] BSTR newValueArg,[in] BSTR urlArg,[in] IHTMLStorage *storageAreaArg);
  };
  [hidden, uuid (30590093-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMStorageEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMSTORAGEEVENT_KEY)] BSTR key ();
    [propget, id (DISPID_IDOMSTORAGEEVENT_OLDVALUE)] BSTR oldValue ();
    [propget, id (DISPID_IDOMSTORAGEEVENT_NEWVALUE)] BSTR newValue ();
    [propget, id (DISPID_IDOMSTORAGEEVENT_URL)] BSTR url ();
    [propget, id (DISPID_IDOMSTORAGEEVENT_STORAGEAREA)] IHTMLStorage *storageArea ();
    [id (DISPID_IDOMSTORAGEEVENT_INITSTORAGEEVENT)] void initStorageEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] BSTR keyArg,[in] BSTR oldValueArg,[in] BSTR newValueArg,[in] BSTR urlArg,[in] IHTMLStorage *storageAreaArg);
  };
  [noncreatable, uuid (30510723-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMStorageEvent {
    [default] dispinterface DispDOMStorageEvent;
    interface IDOMEvent;
    interface IDOMStorageEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMStorageEvent;")
  [odl, oleautomation, dual, uuid (30510830-98b5-11cf-bb82-00aa00bdce0b)] interface IXMLHttpRequestEventTarget : IDispatch {
  };
  [hidden, uuid (305900e7-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispXMLHttpRequestEventTarget {
    properties:
    methods:
    [id (DISPID_IEVENTTARGET_ADDEVENTLISTENER)] void addEventListener ([in] BSTR type,[in] IDispatch *listener,[in] VARIANT_BOOL useCapture);
    [id (DISPID_IEVENTTARGET_REMOVEEVENTLISTENER)] void removeEventListener ([in] BSTR type,[in] IDispatch *listener,[in] VARIANT_BOOL useCapture);
    [id (DISPID_IEVENTTARGET_DISPATCHEVENT)] VARIANT_BOOL dispatchEvent ([in] IDOMEvent *evt);
  };
  [noncreatable, uuid (30510831-98b5-11cf-bb82-00aa00bdce0b)] coclass XMLHttpRequestEventTarget {
    [default] dispinterface DispXMLHttpRequestEventTarget;
    interface IXMLHttpRequestEventTarget;
    interface IEventTarget;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CXMLHttpRequestEventTarget;")
  [hidden, uuid (30510498-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLXMLHttpRequestEvents {
    properties:
    methods:
    [id (DISPID_HTMLXMLHTTPREQUESTEVENTS_ONTIMEOUT)] void ontimeout ();
    [id (DISPID_HTMLXMLHTTPREQUESTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
  };
  [odl, oleautomation, dual, uuid (3051040a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLXMLHttpRequest : IDispatch {
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_READYSTATE)] HRESULT readyState ([retval, out] long *p);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_RESPONSEBODY)] HRESULT responseBody ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_RESPONSETEXT)] HRESULT responseText ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_RESPONSEXML)] HRESULT responseXML ([retval, out] IDispatch **p);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_STATUS)] HRESULT status ([retval, out] long *p);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_STATUSTEXT)] HRESULT statusText ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLXMLHTTPREQUEST_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLXMLHTTPREQUEST_ABORT)] HRESULT abort ();
    [id (DISPID_IHTMLXMLHTTPREQUEST_OPEN)] HRESULT open ([in] BSTR bstrMethod,[in] BSTR bstrUrl,[in] VARIANT varAsync,[optional, in] VARIANT varUser,[optional, in] VARIANT varPassword);
    [id (DISPID_IHTMLXMLHTTPREQUEST_SEND)] HRESULT send ([optional, in] VARIANT varBody);
    [id (DISPID_IHTMLXMLHTTPREQUEST_GETALLRESPONSEHEADERS)] HRESULT getAllResponseHeaders ([retval, out] BSTR *);
    [id (DISPID_IHTMLXMLHTTPREQUEST_GETRESPONSEHEADER)] HRESULT getResponseHeader ([in] BSTR bstrHeader,[retval, out] BSTR *);
    [id (DISPID_IHTMLXMLHTTPREQUEST_SETREQUESTHEADER)] HRESULT setRequestHeader ([in] BSTR bstrHeader,[in] BSTR bstrValue);
  };
  [odl, oleautomation, dual, uuid (30510482-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLXMLHttpRequest2 : IDispatch {
    [propput, id (DISPID_IHTMLXMLHTTPREQUEST2_TIMEOUT)] HRESULT timeout ([in] long v);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST2_TIMEOUT)] HRESULT timeout ([retval, out] long *p);
    [propput, id (DISPID_IHTMLXMLHTTPREQUEST2_ONTIMEOUT), displaybind, bindable] HRESULT ontimeout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST2_ONTIMEOUT), displaybind, bindable] HRESULT ontimeout ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (3051040c-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLXMLHttpRequestFactory : IDispatch {
    [id (DISPID_IHTMLXMLHTTPREQUESTFACTORY_CREATE)] HRESULT create ([retval, out] IHTMLXMLHttpRequest **);
  };
  [hidden, uuid (3050f596-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLXMLHttpRequest {
    properties:
    methods:
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_READYSTATE)] long readyState ();
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_RESPONSEBODY)] VARIANT responseBody ();
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_RESPONSETEXT)] BSTR responseText ();
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_RESPONSEXML)] IDispatch *responseXML ();
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_STATUS)] long status ();
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_STATUSTEXT)] BSTR statusText ();
    [propput, id (DISPID_IHTMLXMLHTTPREQUEST_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [id (DISPID_IHTMLXMLHTTPREQUEST_ABORT)] void abort ();
    [id (DISPID_IHTMLXMLHTTPREQUEST_OPEN)] void open ([in] BSTR bstrMethod,[in] BSTR bstrUrl,[in] VARIANT varAsync,[optional, in] VARIANT varUser,[optional, in] VARIANT varPassword);
    [id (DISPID_IHTMLXMLHTTPREQUEST_SEND)] void send ([optional, in] VARIANT varBody);
    [id (DISPID_IHTMLXMLHTTPREQUEST_GETALLRESPONSEHEADERS)] BSTR getAllResponseHeaders ();
    [id (DISPID_IHTMLXMLHTTPREQUEST_GETRESPONSEHEADER)] BSTR getResponseHeader ([in] BSTR bstrHeader);
    [id (DISPID_IHTMLXMLHTTPREQUEST_SETREQUESTHEADER)] void setRequestHeader ([in] BSTR bstrHeader,[in] BSTR bstrValue);
    [propput, id (DISPID_IHTMLXMLHTTPREQUEST2_TIMEOUT)] void timeout (long v);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST2_TIMEOUT)] long timeout ();
    [propput, id (DISPID_IHTMLXMLHTTPREQUEST2_ONTIMEOUT), displaybind, bindable] void ontimeout (VARIANT v);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST2_ONTIMEOUT), displaybind, bindable] VARIANT ontimeout ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [id (DISPID_IEVENTTARGET_ADDEVENTLISTENER)] void addEventListener ([in] BSTR type,[in] IDispatch *listener,[in] VARIANT_BOOL useCapture);
    [id (DISPID_IEVENTTARGET_REMOVEEVENTLISTENER)] void removeEventListener ([in] BSTR type,[in] IDispatch *listener,[in] VARIANT_BOOL useCapture);
    [id (DISPID_IEVENTTARGET_DISPATCHEVENT)] VARIANT_BOOL dispatchEvent ([in] IDOMEvent *evt);
  };
  [noncreatable, uuid (3051040b-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLXMLHttpRequest {
    [default] dispinterface DispHTMLXMLHttpRequest;
    [source, default] dispinterface HTMLXMLHttpRequestEvents;
    interface IHTMLXMLHttpRequest;
    interface IHTMLXMLHttpRequest2;
    interface IHTMLDOMConstructor;
    interface IEventTarget;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CXMLHttpRequest;")
  [noncreatable, uuid (3051040d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLXMLHttpRequestFactory {
    [default] interface IHTMLXMLHttpRequestFactory;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CXMLHttpRequestFactory;")
  typedef enum _svgAngleType {
    SVG_ANGLETYPE_UNKNOWN = 0,
    SVG_ANGLETYPE_UNSPECIFIED = 1,
    SVG_ANGLETYPE_DEG = 2,
    SVG_ANGLETYPE_RAD = 3,
    SVG_ANGLETYPE_GRAD = 4,
    svgAngleType_Max = 0x7FFFFFFF
  } svgAngleType;
  [odl, oleautomation, dual, uuid (305104d3-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAngle : IDispatch {
    [propput, id (DISPID_ISVGANGLE_UNITTYPE)] HRESULT unitType ([in] short v);
    [propget, id (DISPID_ISVGANGLE_UNITTYPE)] HRESULT unitType ([retval, out] short *p);
    [propput, id (DISPID_ISVGANGLE_VALUE)] HRESULT value ([in] float v);
    [propget, id (DISPID_ISVGANGLE_VALUE)] HRESULT value ([retval, out] float *p);
    [propput, id (DISPID_ISVGANGLE_VALUEINSPECIFIEDUNITS)] HRESULT valueInSpecifiedUnits ([in] float v);
    [propget, id (DISPID_ISVGANGLE_VALUEINSPECIFIEDUNITS)] HRESULT valueInSpecifiedUnits ([retval, out] float *p);
    [propput, id (DISPID_ISVGANGLE_VALUEASSTRING)] HRESULT valueAsString ([in] BSTR v);
    [propget, id (DISPID_ISVGANGLE_VALUEASSTRING)] HRESULT valueAsString ([retval, out] BSTR *p);
    [id (DISPID_ISVGANGLE_NEWVALUESPECIFIEDUNITS)] HRESULT newValueSpecifiedUnits ([in] short unitType,[in] float valueInSpecifiedUnits);
    [id (DISPID_ISVGANGLE_CONVERTTOSPECIFIEDUNITS)] HRESULT convertToSpecifiedUnits ([in] short unitType);
  };
  [noncreatable, uuid (30510584-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAngle {
    [default] interface ISVGAngle;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAngle;")
  typedef enum _svgExternalResourcesRequired {
    svgExternalResourcesRequiredFalse = 0,
    svgExternalResourcesRequiredTrue = 1,
    svgExternalResourcesRequired_Max = 0x7FFFFFFF
  } svgExternalResourcesRequired;
  interface ISVGElement;
  interface ISVGRect;
  interface ISVGMatrix;
  interface ISVGStringList;
  interface ISVGAnimatedRect;
  interface ISVGAnimatedString;
  interface ISVGAnimatedBoolean;
  interface ISVGAnimatedTransformList;
  interface ISVGAnimatedPreserveAspectRatio;
  [odl, oleautomation, dual, uuid (305104da-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGStylable : IDispatch {
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] HRESULT className ([retval, out] ISVGAnimatedString **p);
  };
  [odl, oleautomation, dual, uuid (305104db-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGLocatable : IDispatch {
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] HRESULT nearestViewportElement ([retval, out] ISVGElement **p);
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] HRESULT farthestViewportElement ([retval, out] ISVGElement **p);
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] HRESULT getBBox ([retval, out] ISVGRect **ppResult);
    [id (DISPID_ISVGLOCATABLE_GETCTM)] HRESULT getCTM ([retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] HRESULT getScreenCTM ([retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] HRESULT getTransformToElement ([in] ISVGElement *pElement,[retval, out] ISVGMatrix **ppResult);
  };
  [odl, oleautomation, dual, uuid (305104dc-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGTransformable : IDispatch {
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] HRESULT transform ([retval, out] ISVGAnimatedTransformList **p);
  };
  [odl, oleautomation, dual, uuid (305104dd-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGTests : IDispatch {
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] HRESULT requiredFeatures ([retval, out] ISVGStringList **p);
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] HRESULT requiredExtensions ([retval, out] ISVGStringList **p);
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] HRESULT systemLanguage ([retval, out] ISVGStringList **p);
    [id (DISPID_ISVGTESTS_HASEXTENSION)] HRESULT hasExtension ([in] BSTR extension,[retval, out] VARIANT_BOOL *pResult);
  };
  [odl, oleautomation, dual, uuid (305104de-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGLangSpace : IDispatch {
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] HRESULT xmllang ([in] BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] HRESULT xmllang ([retval, out] BSTR *p);
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] HRESULT xmlspace ([in] BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] HRESULT xmlspace ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305104df-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGExternalResourcesRequired : IDispatch {
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] HRESULT externalResourcesRequired ([retval, out] ISVGAnimatedBoolean **p);
  };
  [odl, oleautomation, dual, uuid (305104e0-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGFitToViewBox : IDispatch {
    [propget, id (DISPID_ISVGFITTOVIEWBOX_VIEWBOX)] HRESULT viewBox ([retval, out] ISVGAnimatedRect **p);
    [propputref, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] HRESULT preserveAspectRatio ([in] ISVGAnimatedPreserveAspectRatio *v);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] HRESULT preserveAspectRatio ([retval, out] ISVGAnimatedPreserveAspectRatio **p);
  };
  [odl, oleautomation, dual, uuid (305104e1-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGZoomAndPan : IDispatch {
    [propget, id (DISPID_ISVGZOOMANDPAN_ZOOMANDPAN)] HRESULT zoomAndPan ([retval, out] short *p);
  };
  [odl, oleautomation, dual, uuid (305104e3-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGURIReference : IDispatch {
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] HRESULT href ([retval, out] ISVGAnimatedString **p);
  };
  interface ISVGAngle;
  [odl, oleautomation, dual, uuid (305104d4-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedAngle : IDispatch {
    [propputref, id (DISPID_ISVGANIMATEDANGLE_BASEVAL)] HRESULT baseVal ([in] ISVGAngle *v);
    [propget, id (DISPID_ISVGANIMATEDANGLE_BASEVAL)] HRESULT baseVal ([retval, out] ISVGAngle **p);
    [propputref, id (DISPID_ISVGANIMATEDANGLE_ANIMVAL)] HRESULT animVal ([in] ISVGAngle *v);
    [propget, id (DISPID_ISVGANIMATEDANGLE_ANIMVAL)] HRESULT animVal ([retval, out] ISVGAngle **p);
  };
  [noncreatable, uuid (305105e4-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedAngle {
    [default] interface ISVGAnimatedAngle;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedAngle;")
  interface ISVGTransformList;
  [odl, oleautomation, dual, uuid (305104f9-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedTransformList : IDispatch {
    [propputref, id (DISPID_ISVGANIMATEDTRANSFORMLIST_BASEVAL)] HRESULT baseVal ([in] ISVGTransformList *v);
    [propget, id (DISPID_ISVGANIMATEDTRANSFORMLIST_BASEVAL)] HRESULT baseVal ([retval, out] ISVGTransformList **p);
    [propputref, id (DISPID_ISVGANIMATEDTRANSFORMLIST_ANIMVAL)] HRESULT animVal ([in] ISVGTransformList *v);
    [propget, id (DISPID_ISVGANIMATEDTRANSFORMLIST_ANIMVAL)] HRESULT animVal ([retval, out] ISVGTransformList **p);
  };
  [noncreatable, uuid (305105b1-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedTransformList {
    [default] interface ISVGAnimatedTransformList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedTransformList;")
  [odl, oleautomation, dual, uuid (305104c6-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedBoolean : IDispatch {
    [propput, id (DISPID_ISVGANIMATEDBOOLEAN_BASEVAL)] HRESULT baseVal ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ISVGANIMATEDBOOLEAN_BASEVAL)] HRESULT baseVal ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ISVGANIMATEDBOOLEAN_ANIMVAL)] HRESULT animVal ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ISVGANIMATEDBOOLEAN_ANIMVAL)] HRESULT animVal ([retval, out] VARIANT_BOOL *p);
  };
  [noncreatable, uuid (3051058b-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedBoolean {
    [default] interface ISVGAnimatedBoolean;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedBoolean;")
  [odl, oleautomation, dual, uuid (305104c9-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedEnumeration : IDispatch {
    [propput, id (DISPID_ISVGANIMATEDENUMERATION_BASEVAL)] HRESULT baseVal ([in] USHORT v);
    [propget, id (DISPID_ISVGANIMATEDENUMERATION_BASEVAL)] HRESULT baseVal ([retval, out] USHORT *p);
    [propput, id (DISPID_ISVGANIMATEDENUMERATION_ANIMVAL)] HRESULT animVal ([in] USHORT v);
    [propget, id (DISPID_ISVGANIMATEDENUMERATION_ANIMVAL)] HRESULT animVal ([retval, out] USHORT *p);
  };
  [noncreatable, uuid (3051058e-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedEnumeration {
    [default] interface ISVGAnimatedEnumeration;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedEnumeration;")
  [odl, oleautomation, dual, uuid (305104ca-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedInteger : IDispatch {
    [propput, id (DISPID_ISVGANIMATEDINTEGER_BASEVAL)] HRESULT baseVal ([in] long v);
    [propget, id (DISPID_ISVGANIMATEDINTEGER_BASEVAL)] HRESULT baseVal ([retval, out] long *p);
    [propput, id (DISPID_ISVGANIMATEDINTEGER_ANIMVAL)] HRESULT animVal ([in] long v);
    [propget, id (DISPID_ISVGANIMATEDINTEGER_ANIMVAL)] HRESULT animVal ([retval, out] long *p);
  };
  [noncreatable, uuid (3051058f-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedInteger {
    [default] interface ISVGAnimatedInteger;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedInteger;")
  interface ISVGLength;
  [odl, oleautomation, dual, uuid (305104d0-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedLength : IDispatch {
    [propputref, id (DISPID_ISVGANIMATEDLENGTH_BASEVAL)] HRESULT baseVal ([in] ISVGLength *v);
    [propget, id (DISPID_ISVGANIMATEDLENGTH_BASEVAL)] HRESULT baseVal ([retval, out] ISVGLength **p);
    [propputref, id (DISPID_ISVGANIMATEDLENGTH_ANIMVAL)] HRESULT animVal ([in] ISVGLength *v);
    [propget, id (DISPID_ISVGANIMATEDLENGTH_ANIMVAL)] HRESULT animVal ([retval, out] ISVGLength **p);
  };
  [noncreatable, uuid (30510581-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedLength {
    [default] interface ISVGAnimatedLength;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedLength;")
  interface ISVGLengthList;
  [odl, oleautomation, dual, uuid (305104d2-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedLengthList : IDispatch {
    [propputref, id (DISPID_ISVGANIMATEDLENGTHLIST_BASEVAL)] HRESULT baseVal ([in] ISVGLengthList *v);
    [propget, id (DISPID_ISVGANIMATEDLENGTHLIST_BASEVAL)] HRESULT baseVal ([retval, out] ISVGLengthList **p);
    [propputref, id (DISPID_ISVGANIMATEDLENGTHLIST_ANIMVAL)] HRESULT animVal ([in] ISVGLengthList *v);
    [propget, id (DISPID_ISVGANIMATEDLENGTHLIST_ANIMVAL)] HRESULT animVal ([retval, out] ISVGLengthList **p);
  };
  [noncreatable, uuid (30510582-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedLengthList {
    [default] interface ISVGAnimatedLengthList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedLengthList;")
  interface ISVGNumber;
  [odl, oleautomation, dual, uuid (305104cc-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedNumber : IDispatch {
    [propput, id (DISPID_ISVGANIMATEDNUMBER_BASEVAL)] HRESULT baseVal ([in] float v);
    [propget, id (DISPID_ISVGANIMATEDNUMBER_BASEVAL)] HRESULT baseVal ([retval, out] float *p);
    [propput, id (DISPID_ISVGANIMATEDNUMBER_ANIMVAL)] HRESULT animVal ([in] float v);
    [propget, id (DISPID_ISVGANIMATEDNUMBER_ANIMVAL)] HRESULT animVal ([retval, out] float *p);
  };
  [noncreatable, uuid (30510588-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedNumber {
    [default] interface ISVGAnimatedNumber;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedNumber;")
  interface ISVGNumberList;
  [odl, oleautomation, dual, uuid (305104ce-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedNumberList : IDispatch {
    [propputref, id (DISPID_ISVGANIMATEDNUMBERLIST_BASEVAL)] HRESULT baseVal ([in] ISVGNumberList *v);
    [propget, id (DISPID_ISVGANIMATEDNUMBERLIST_BASEVAL)] HRESULT baseVal ([retval, out] ISVGNumberList **p);
    [propputref, id (DISPID_ISVGANIMATEDNUMBERLIST_ANIMVAL)] HRESULT animVal ([in] ISVGNumberList *v);
    [propget, id (DISPID_ISVGANIMATEDNUMBERLIST_ANIMVAL)] HRESULT animVal ([retval, out] ISVGNumberList **p);
  };
  [noncreatable, uuid (3051058a-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedNumberList {
    [default] interface ISVGAnimatedNumberList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedNumberList;")
  interface ISVGRect;
  [odl, oleautomation, dual, uuid (305104d8-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedRect : IDispatch {
    [propputref, id (DISPID_ISVGANIMATEDRECT_BASEVAL)] HRESULT baseVal ([in] ISVGRect *v);
    [propget, id (DISPID_ISVGANIMATEDRECT_BASEVAL)] HRESULT baseVal ([retval, out] ISVGRect **p);
    [propputref, id (DISPID_ISVGANIMATEDRECT_ANIMVAL)] HRESULT animVal ([in] ISVGRect *v);
    [propget, id (DISPID_ISVGANIMATEDRECT_ANIMVAL)] HRESULT animVal ([retval, out] ISVGRect **p);
  };
  [noncreatable, uuid (30510586-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedRect {
    [default] interface ISVGAnimatedRect;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedRect;")
  [odl, oleautomation, dual, uuid (305104c7-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedString : IDispatch {
    [propput, id (DISPID_ISVGANIMATEDSTRING_BASEVAL)] HRESULT baseVal ([in] BSTR v);
    [propget, id (DISPID_ISVGANIMATEDSTRING_BASEVAL)] HRESULT baseVal ([retval, out] BSTR *p);
    [propget, id (DISPID_ISVGANIMATEDSTRING_ANIMVAL)] HRESULT animVal ([retval, out] BSTR *p);
  };
  [noncreatable, uuid (3051058c-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedString {
    [default] interface ISVGAnimatedString;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedString;")
  [odl, oleautomation, dual, uuid (3051052d-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGClipPathElement : IDispatch {
    [propputref, id (DISPID_ISVGCLIPPATHELEMENT_CLIPPATHUNITS)] HRESULT clipPathUnits ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGCLIPPATHELEMENT_CLIPPATHUNITS)] HRESULT clipPathUnits ([retval, out] ISVGAnimatedEnumeration **p);
  };
  [hidden, uuid (3059003b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGClipPathElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGCLIPPATHELEMENT_CLIPPATHUNITS)] void clipPathUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGCLIPPATHELEMENT_CLIPPATHUNITS)] ISVGAnimatedEnumeration *clipPathUnits ();
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] void xmllang (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] BSTR xmllang ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] void xmlspace (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] BSTR xmlspace ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] ISVGElement *nearestViewportElement ();
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] ISVGElement *farthestViewportElement ();
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] ISVGRect *getBBox ();
    [id (DISPID_ISVGLOCATABLE_GETCTM)] ISVGMatrix *getCTM ();
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] ISVGMatrix *getScreenCTM ();
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] ISVGMatrix *getTransformToElement ([in] ISVGElement *pElement);
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
  };
  [noncreatable, uuid (305105e6-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGClipPathElement {
    [default] dispinterface DispSVGClipPathElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGClipPathElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGLocatable;
    interface ISVGTransformable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGClipPathElement;")
  [odl, oleautomation, dual, uuid (305104e6-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGDocument : IDispatch {
    [propget, id (DISPID_ISVGDOCUMENT_ROOTELEMENT)] HRESULT rootElement ([retval, out] ISVGSVGElement **p);
  };
  [odl, oleautomation, dual, uuid (305105ab-98b5-11cf-bb82-00aa00bdce0b)] interface IGetSVGDocument : IDispatch {
    [id (DISPID_IGETSVGDOCUMENT_GETSVGDOCUMENT)] HRESULT getSVGDocument ([retval, out] IDispatch **ppSVGDocument);
  };
  typedef enum _svgFocusable {
    svgFocusableNotSet = 0,
    svgFocusableAuto = 1,
    svgFocusableTrue = 2,
    svgFocusableFalse = 3,
    svgFocusable_Max = 0x7FFFFFFF
  } svgFocusable;
  interface ISVGSVGElement;
  [odl, oleautomation, dual, uuid (305104c5-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGElement : IDispatch {
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] HRESULT xmlbase ([in] BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] HRESULT xmlbase ([retval, out] BSTR *p);
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] HRESULT ownerSVGElement ([in] ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] HRESULT ownerSVGElement ([retval, out] ISVGSVGElement **p);
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] HRESULT viewportElement ([in] ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] HRESULT viewportElement ([retval, out] ISVGElement **p);
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] HRESULT focusable ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] HRESULT focusable ([retval, out] ISVGAnimatedEnumeration **p);
  };
  [hidden, uuid (30590000-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGElement {
    properties:
    methods:
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
  };
  [noncreatable, uuid (30510564-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGElement {
    [default] dispinterface DispSVGElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGElement;
    interface IHTMLElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGElement;")
  [odl, oleautomation, dual, uuid (305104d6-98b5-11cf-bb82-00aa00bdce0b)] interface IICCSVGColor : IDispatch {
  };
  typedef enum _svgLengthType {
    SVG_LENGTHTYPE_UNKNOWN = 0,
    SVG_LENGTHTYPE_NUMBER = 1,
    SVG_LENGTHTYPE_PERCENTAGE = 2,
    SVG_LENGTHTYPE_EMS = 3,
    SVG_LENGTHTYPE_EXS = 4,
    SVG_LENGTHTYPE_PX = 5,
    SVG_LENGTHTYPE_CM = 6,
    SVG_LENGTHTYPE_MM = 7,
    SVG_LENGTHTYPE_IN = 8,
    SVG_LENGTHTYPE_PT = 9,
    SVG_LENGTHTYPE_PC = 10,
    svgLengthType_Max = 0x7FFFFFFF
  } svgLengthType;
  [odl, oleautomation, dual, uuid (305104cf-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGLength : IDispatch {
    [propput, id (DISPID_ISVGLENGTH_UNITTYPE)] HRESULT unitType ([in] short v);
    [propget, id (DISPID_ISVGLENGTH_UNITTYPE)] HRESULT unitType ([retval, out] short *p);
    [propput, id (DISPID_ISVGLENGTH_VALUE)] HRESULT value ([in] float v);
    [propget, id (DISPID_ISVGLENGTH_VALUE)] HRESULT value ([retval, out] float *p);
    [propput, id (DISPID_ISVGLENGTH_VALUEINSPECIFIEDUNITS)] HRESULT valueInSpecifiedUnits ([in] float v);
    [propget, id (DISPID_ISVGLENGTH_VALUEINSPECIFIEDUNITS)] HRESULT valueInSpecifiedUnits ([retval, out] float *p);
    [propput, id (DISPID_ISVGLENGTH_VALUEASSTRING)] HRESULT valueAsString ([in] BSTR v);
    [propget, id (DISPID_ISVGLENGTH_VALUEASSTRING)] HRESULT valueAsString ([retval, out] BSTR *p);
    [id (DISPID_ISVGLENGTH_NEWVALUESPECIFIEDUNITS)] HRESULT newValueSpecifiedUnits ([in] short unitType,[in] float valueInSpecifiedUnits);
    [id (DISPID_ISVGLENGTH_CONVERTTOSPECIFIEDUNITS)] HRESULT convertToSpecifiedUnits ([in] short unitType);
  };
  [noncreatable, uuid (3051057e-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGLength {
    [default] interface ISVGLength;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGLength;")
  interface ISVGLength;
  [odl, oleautomation, dual, uuid (305104d1-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGLengthList : IDispatch {
    [propput, id (DISPID_ISVGLENGTHLIST_NUMBEROFITEMS)] HRESULT numberOfItems ([in] long v);
    [propget, id (DISPID_ISVGLENGTHLIST_NUMBEROFITEMS)] HRESULT numberOfItems ([retval, out] long *p);
    [id (DISPID_ISVGLENGTHLIST_CLEAR)] HRESULT clear ();
    [id (DISPID_ISVGLENGTHLIST_INITIALIZE)] HRESULT initialize ([in] ISVGLength *newItem,[retval, out] ISVGLength **ppResult);
    [id (DISPID_ISVGLENGTHLIST_GETITEM)] HRESULT getItem ([in] long index,[retval, out] ISVGLength **ppResult);
    [id (DISPID_ISVGLENGTHLIST_INSERTITEMBEFORE)] HRESULT insertItemBefore ([in] ISVGLength *newItem,[in] long index,[retval, out] ISVGLength **ppResult);
    [id (DISPID_ISVGLENGTHLIST_REPLACEITEM)] HRESULT replaceItem ([in] ISVGLength *newItem,[in] long index,[retval, out] ISVGLength **ppResult);
    [id (DISPID_ISVGLENGTHLIST_REMOVEITEM)] HRESULT removeItem ([in] long index,[retval, out] ISVGLength **ppResult);
    [id (DISPID_ISVGLENGTHLIST_APPENDITEM)] HRESULT appendItem ([in] ISVGLength *newItem,[retval, out] ISVGLength **ppResult);
  };
  [noncreatable, uuid (30510580-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGLengthList {
    [default] interface ISVGLengthList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGLengthList;")
  [odl, oleautomation, dual, uuid (305104f6-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGMatrix : IDispatch {
    [propput, id (DISPID_ISVGMATRIX_A)] HRESULT a ([in] float v);
    [propget, id (DISPID_ISVGMATRIX_A)] HRESULT a ([retval, out] float *p);
    [propput, id (DISPID_ISVGMATRIX_B)] HRESULT b ([in] float v);
    [propget, id (DISPID_ISVGMATRIX_B)] HRESULT b ([retval, out] float *p);
    [propput, id (DISPID_ISVGMATRIX_C)] HRESULT c ([in] float v);
    [propget, id (DISPID_ISVGMATRIX_C)] HRESULT c ([retval, out] float *p);
    [propput, id (DISPID_ISVGMATRIX_D)] HRESULT d ([in] float v);
    [propget, id (DISPID_ISVGMATRIX_D)] HRESULT d ([retval, out] float *p);
    [propput, id (DISPID_ISVGMATRIX_E)] HRESULT e ([in] float v);
    [propget, id (DISPID_ISVGMATRIX_E)] HRESULT e ([retval, out] float *p);
    [propput, id (DISPID_ISVGMATRIX_F)] HRESULT f ([in] float v);
    [propget, id (DISPID_ISVGMATRIX_F)] HRESULT f ([retval, out] float *p);
    [id (DISPID_ISVGMATRIX_MULTIPLY)] HRESULT multiply ([in] ISVGMatrix *secondMatrix,[retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_INVERSE)] HRESULT inverse ([retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_TRANSLATE)] HRESULT translate ([in] float x,[in] float y,[retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_SCALE)] HRESULT scale ([in] float scaleFactor,[retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_SCALENONUNIFORM)] HRESULT scaleNonUniform ([in] float scaleFactorX,[in] float scaleFactorY,[retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_ROTATE)] HRESULT rotate ([in] float angle,[retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_ROTATEFROMVECTOR)] HRESULT rotateFromVector ([in] float x,[in] float y,[retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_FLIPX)] HRESULT flipX ([retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_FLIPY)] HRESULT flipY ([retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_SKEWX)] HRESULT skewX ([in] float angle,[retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_SKEWY)] HRESULT skewY ([in] float angle,[retval, out] ISVGMatrix **ppResult);
  };
  [noncreatable, uuid (305105ae-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGMatrix {
    [default] interface ISVGMatrix;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGMatrix;")
  [odl, oleautomation, dual, uuid (305104cb-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGNumber : IDispatch {
    [propput, id (DISPID_ISVGNUMBER_VALUE)] HRESULT value ([in] float v);
    [propget, id (DISPID_ISVGNUMBER_VALUE)] HRESULT value ([retval, out] float *p);
  };
  [noncreatable, uuid (30510587-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGNumber {
    [default] interface ISVGNumber;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGNumber;")
  interface ISVGNumber;
  [odl, oleautomation, dual, uuid (305104cd-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGNumberList : IDispatch {
    [propput, id (DISPID_ISVGNUMBERLIST_NUMBEROFITEMS)] HRESULT numberOfItems ([in] long v);
    [propget, id (DISPID_ISVGNUMBERLIST_NUMBEROFITEMS)] HRESULT numberOfItems ([retval, out] long *p);
    [id (DISPID_ISVGNUMBERLIST_CLEAR)] HRESULT clear ();
    [id (DISPID_ISVGNUMBERLIST_INITIALIZE)] HRESULT initialize ([in] ISVGNumber *newItem,[retval, out] ISVGNumber **ppResult);
    [id (DISPID_ISVGNUMBERLIST_GETITEM)] HRESULT getItem ([in] long index,[retval, out] ISVGNumber **ppResult);
    [id (DISPID_ISVGNUMBERLIST_INSERTITEMBEFORE)] HRESULT insertItemBefore ([in] ISVGNumber *newItem,[in] long index,[retval, out] ISVGNumber **ppResult);
    [id (DISPID_ISVGNUMBERLIST_REPLACEITEM)] HRESULT replaceItem ([in] ISVGNumber *newItem,[in] long index,[retval, out] ISVGNumber **ppResult);
    [id (DISPID_ISVGNUMBERLIST_REMOVEITEM)] HRESULT removeItem ([in] long index,[retval, out] ISVGNumber **ppResult);
    [id (DISPID_ISVGNUMBERLIST_APPENDITEM)] HRESULT appendItem ([in] ISVGNumber *newItem,[retval, out] ISVGNumber **ppResult);
  };
  [noncreatable, uuid (30510589-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGNumberList {
    [default] interface ISVGNumberList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGNumberList;")
  [odl, oleautomation, dual, uuid (30510524-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPaint : IDispatch {
  };
  [odl, oleautomation, dual, uuid (3051052c-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPatternElement : IDispatch {
    [propputref, id (DISPID_ISVGPATTERNELEMENT_PATTERNUNITS)] HRESULT patternUnits ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_PATTERNUNITS)] HRESULT patternUnits ([retval, out] ISVGAnimatedEnumeration **p);
    [propputref, id (DISPID_ISVGPATTERNELEMENT_PATTERNCONTENTUNITS)] HRESULT patternContentUnits ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_PATTERNCONTENTUNITS)] HRESULT patternContentUnits ([retval, out] ISVGAnimatedEnumeration **p);
    [propputref, id (DISPID_ISVGPATTERNELEMENT_PATTERNTRANSFORM)] HRESULT patternTransform ([in] ISVGAnimatedTransformList *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_PATTERNTRANSFORM)] HRESULT patternTransform ([retval, out] ISVGAnimatedTransformList **p);
    [propputref, id (DISPID_ISVGPATTERNELEMENT_X)] HRESULT x ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_X)] HRESULT x ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGPATTERNELEMENT_Y)] HRESULT y ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_Y)] HRESULT y ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGPATTERNELEMENT_WIDTH)] HRESULT width ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_WIDTH)] HRESULT width ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGPATTERNELEMENT_HEIGHT)] HRESULT height ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_HEIGHT)] HRESULT height ([retval, out] ISVGAnimatedLength **p);
  };
  [hidden, uuid (3059002c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPatternElement {
    properties:
    methods:
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propputref, id (DISPID_ISVGPATTERNELEMENT_PATTERNUNITS)] void patternUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_PATTERNUNITS)] ISVGAnimatedEnumeration *patternUnits ();
    [propputref, id (DISPID_ISVGPATTERNELEMENT_PATTERNCONTENTUNITS)] void patternContentUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_PATTERNCONTENTUNITS)] ISVGAnimatedEnumeration *patternContentUnits ();
    [propputref, id (DISPID_ISVGPATTERNELEMENT_PATTERNTRANSFORM)] void patternTransform (ISVGAnimatedTransformList *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_PATTERNTRANSFORM)] ISVGAnimatedTransformList *patternTransform ();
    [propputref, id (DISPID_ISVGPATTERNELEMENT_X)] void x (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_X)] ISVGAnimatedLength *x ();
    [propputref, id (DISPID_ISVGPATTERNELEMENT_Y)] void y (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_Y)] ISVGAnimatedLength *y ();
    [propputref, id (DISPID_ISVGPATTERNELEMENT_WIDTH)] void width (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_WIDTH)] ISVGAnimatedLength *width ();
    [propputref, id (DISPID_ISVGPATTERNELEMENT_HEIGHT)] void height (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_HEIGHT)] ISVGAnimatedLength *height ();
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] void xmllang (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] BSTR xmllang ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] void xmlspace (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] BSTR xmlspace ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGFITTOVIEWBOX_VIEWBOX)] ISVGAnimatedRect *viewBox ();
    [propputref, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] void preserveAspectRatio (ISVGAnimatedPreserveAspectRatio *v);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] ISVGAnimatedPreserveAspectRatio *preserveAspectRatio ();
  };
  [noncreatable, uuid (305105d4-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPatternElement {
    [default] dispinterface DispSVGPatternElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGElement;
    interface ISVGPatternElement;
    interface ISVGURIReference;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGFitToViewBox;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPatternElement;")
  typedef enum _svgPathSegType {
    PATHSEG_UNKNOWN = 0,
    PATHSEG_CLOSEPATH = 1,
    PATHSEG_MOVETO_ABS = 2,
    PATHSEG_MOVETO_REL = 3,
    PATHSEG_LINETO_ABS = 4,
    PATHSEG_LINETO_REL = 5,
    PATHSEG_CURVETO_CUBIC_ABS = 6,
    PATHSEG_CURVETO_CUBIC_REL = 7,
    PATHSEG_CURVETO_QUADRATIC_ABS = 8,
    PATHSEG_CURVETO_QUADRATIC_REL = 9,
    PATHSEG_ARC_ABS = 10,
    PATHSEG_ARC_REL = 11,
    PATHSEG_LINETO_HORIZONTAL_ABS = 12,
    PATHSEG_LINETO_HORIZONTAL_REL = 13,
    PATHSEG_LINETO_VERTICAL_ABS = 14,
    PATHSEG_LINETO_VERTICAL_REL = 15,
    PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16,
    PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17,
    PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18,
    PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19,
    svgPathSegType_Max = 0x7FFFFFFF
  } svgPathSegType;
  [odl, oleautomation, dual, uuid (305104fc-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSeg : IDispatch {
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] HRESULT pathSegType ([in] short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] HRESULT pathSegType ([retval, out] short *p);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] HRESULT pathSegTypeAsLetter ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510506-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegArcAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGARCABS_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCABS_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCABS_R1)] HRESULT r1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_R1)] HRESULT r1 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCABS_R2)] HRESULT r2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_R2)] HRESULT r2 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCABS_ANGLE)] HRESULT angle ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_ANGLE)] HRESULT angle ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCABS_LARGEARCFLAG)] HRESULT largeArcFlag ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_LARGEARCFLAG)] HRESULT largeArcFlag ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ISVGPATHSEGARCABS_SWEEPFLAG)] HRESULT sweepFlag ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_SWEEPFLAG)] HRESULT sweepFlag ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (30510507-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegArcRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGARCREL_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCREL_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCREL_R1)] HRESULT r1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_R1)] HRESULT r1 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCREL_R2)] HRESULT r2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_R2)] HRESULT r2 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCREL_ANGLE)] HRESULT angle ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_ANGLE)] HRESULT angle ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCREL_LARGEARCFLAG)] HRESULT largeArcFlag ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_LARGEARCFLAG)] HRESULT largeArcFlag ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ISVGPATHSEGARCREL_SWEEPFLAG)] HRESULT sweepFlag ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_SWEEPFLAG)] HRESULT sweepFlag ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (305104fd-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegClosePath : IDispatch {
  };
  [odl, oleautomation, dual, uuid (305104fe-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegMovetoAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGMOVETOABS_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGMOVETOABS_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGMOVETOABS_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGMOVETOABS_Y)] HRESULT y ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (305104ff-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegMovetoRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGMOVETOREL_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGMOVETOREL_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGMOVETOREL_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGMOVETOREL_Y)] HRESULT y ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (30510500-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegLinetoAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGLINETOABS_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOABS_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGLINETOABS_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOABS_Y)] HRESULT y ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (30510501-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegLinetoRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGLINETOREL_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOREL_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGLINETOREL_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOREL_Y)] HRESULT y ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (30510502-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegCurvetoCubicAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X1)] HRESULT x1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X1)] HRESULT x1 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y1)] HRESULT y1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y1)] HRESULT y1 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X2)] HRESULT x2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X2)] HRESULT x2 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y2)] HRESULT y2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y2)] HRESULT y2 ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (30510503-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegCurvetoCubicRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X1)] HRESULT x1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X1)] HRESULT x1 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y1)] HRESULT y1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y1)] HRESULT y1 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X2)] HRESULT x2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X2)] HRESULT x2 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y2)] HRESULT y2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y2)] HRESULT y2 ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (3051050c-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegCurvetoCubicSmoothAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_X2)] HRESULT x2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_X2)] HRESULT x2 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_Y2)] HRESULT y2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_Y2)] HRESULT y2 ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (3051050d-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegCurvetoCubicSmoothRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_X2)] HRESULT x2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_X2)] HRESULT x2 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_Y2)] HRESULT y2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_Y2)] HRESULT y2 ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (30510504-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegCurvetoQuadraticAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_X1)] HRESULT x1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_X1)] HRESULT x1 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_Y1)] HRESULT y1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_Y1)] HRESULT y1 ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (30510505-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegCurvetoQuadraticRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_X1)] HRESULT x1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_X1)] HRESULT x1 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_Y1)] HRESULT y1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_Y1)] HRESULT y1 ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (3051050e-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegCurvetoQuadraticSmoothAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHABS_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHABS_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHABS_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHABS_Y)] HRESULT y ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (3051050f-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegCurvetoQuadraticSmoothRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHREL_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHREL_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHREL_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHREL_Y)] HRESULT y ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (30510508-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegLinetoHorizontalAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGLINETOHORIZONTALABS_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOHORIZONTALABS_X)] HRESULT x ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (30510509-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegLinetoHorizontalRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGLINETOHORIZONTALREL_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOHORIZONTALREL_X)] HRESULT x ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (3051050a-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegLinetoVerticalAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGLINETOVERTICALABS_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOVERTICALABS_Y)] HRESULT y ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (3051050b-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegLinetoVerticalRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGLINETOVERTICALREL_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOVERTICALREL_Y)] HRESULT y ([retval, out] float *p);
  };
  [noncreatable, uuid (305105b3-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSeg {
    [default] interface ISVGPathSeg;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSeg;")
  [hidden, uuid (30590013-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegArcAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGARCABS_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGARCABS_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_Y)] float y ();
    [propput, id (DISPID_ISVGPATHSEGARCABS_R1)] void r1 (float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_R1)] float r1 ();
    [propput, id (DISPID_ISVGPATHSEGARCABS_R2)] void r2 (float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_R2)] float r2 ();
    [propput, id (DISPID_ISVGPATHSEGARCABS_ANGLE)] void angle (float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_ANGLE)] float angle ();
    [propput, id (DISPID_ISVGPATHSEGARCABS_LARGEARCFLAG)] void largeArcFlag (VARIANT_BOOL v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_LARGEARCFLAG)] VARIANT_BOOL largeArcFlag ();
    [propput, id (DISPID_ISVGPATHSEGARCABS_SWEEPFLAG)] void sweepFlag (VARIANT_BOOL v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_SWEEPFLAG)] VARIANT_BOOL sweepFlag ();
  };
  [noncreatable, uuid (305105bb-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegArcAbs {
    [default] dispinterface DispSVGPathSegArcAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegArcAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegArcAbs;")
  [hidden, uuid (30590014-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegArcRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGARCREL_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGARCREL_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_Y)] float y ();
    [propput, id (DISPID_ISVGPATHSEGARCREL_R1)] void r1 (float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_R1)] float r1 ();
    [propput, id (DISPID_ISVGPATHSEGARCREL_R2)] void r2 (float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_R2)] float r2 ();
    [propput, id (DISPID_ISVGPATHSEGARCREL_ANGLE)] void angle (float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_ANGLE)] float angle ();
    [propput, id (DISPID_ISVGPATHSEGARCREL_LARGEARCFLAG)] void largeArcFlag (VARIANT_BOOL v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_LARGEARCFLAG)] VARIANT_BOOL largeArcFlag ();
    [propput, id (DISPID_ISVGPATHSEGARCREL_SWEEPFLAG)] void sweepFlag (VARIANT_BOOL v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_SWEEPFLAG)] VARIANT_BOOL sweepFlag ();
  };
  [noncreatable, uuid (305105bc-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegArcRel {
    [default] dispinterface DispSVGPathSegArcRel;
    interface ISVGPathSeg;
    interface ISVGPathSegArcRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegArcRel;")
  [hidden, uuid (30590015-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegClosePath {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
  };
  [noncreatable, uuid (305105bd-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegClosePath {
    [default] dispinterface DispSVGPathSegClosePath;
    interface ISVGPathSeg;
    interface ISVGPathSegClosePath;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegClosePath;")
  [hidden, uuid (30590024-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegMovetoAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGMOVETOABS_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGMOVETOABS_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGMOVETOABS_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGMOVETOABS_Y)] float y ();
  };
  [noncreatable, uuid (305105cc-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegMovetoAbs {
    [default] dispinterface DispSVGPathSegMovetoAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegMovetoAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegMovetoAbs;")
  [hidden, uuid (30590025-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegMovetoRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGMOVETOREL_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGMOVETOREL_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGMOVETOREL_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGMOVETOREL_Y)] float y ();
  };
  [noncreatable, uuid (305105cd-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegMovetoRel {
    [default] dispinterface DispSVGPathSegMovetoRel;
    interface ISVGPathSeg;
    interface ISVGPathSegMovetoRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegMovetoRel;")
  [hidden, uuid (3059001e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegLinetoAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGLINETOABS_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOABS_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGLINETOABS_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOABS_Y)] float y ();
  };
  [noncreatable, uuid (305105c6-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegLinetoAbs {
    [default] dispinterface DispSVGPathSegLinetoAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegLinetoAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegLinetoAbs;")
  [hidden, uuid (30590021-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegLinetoRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGLINETOREL_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOREL_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGLINETOREL_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOREL_Y)] float y ();
  };
  [noncreatable, uuid (305105c9-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegLinetoRel {
    [default] dispinterface DispSVGPathSegLinetoRel;
    interface ISVGPathSeg;
    interface ISVGPathSegLinetoRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegLinetoRel;")
  [hidden, uuid (30590016-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegCurvetoCubicAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y)] float y ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X1)] void x1 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X1)] float x1 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y1)] void y1 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y1)] float y1 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X2)] void x2 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X2)] float x2 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y2)] void y2 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y2)] float y2 ();
  };
  [noncreatable, uuid (305105be-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegCurvetoCubicAbs {
    [default] dispinterface DispSVGPathSegCurvetoCubicAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegCurvetoCubicAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegCurvetoCubicAbs;")
  [hidden, uuid (30590017-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegCurvetoCubicRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y)] float y ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X1)] void x1 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X1)] float x1 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y1)] void y1 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y1)] float y1 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X2)] void x2 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X2)] float x2 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y2)] void y2 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y2)] float y2 ();
  };
  [noncreatable, uuid (305105bf-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegCurvetoCubicRel {
    [default] dispinterface DispSVGPathSegCurvetoCubicRel;
    interface ISVGPathSeg;
    interface ISVGPathSegCurvetoCubicRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegCurvetoCubicRel;")
  [hidden, uuid (30590018-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegCurvetoCubicSmoothAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_Y)] float y ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_X2)] void x2 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_X2)] float x2 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_Y2)] void y2 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_Y2)] float y2 ();
  };
  [noncreatable, uuid (305105c0-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegCurvetoCubicSmoothAbs {
    [default] dispinterface DispSVGPathSegCurvetoCubicSmoothAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegCurvetoCubicSmoothAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegCurvetoCubicSmoothAbs;")
  [hidden, uuid (30590019-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegCurvetoCubicSmoothRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_Y)] float y ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_X2)] void x2 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_X2)] float x2 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_Y2)] void y2 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_Y2)] float y2 ();
  };
  [noncreatable, uuid (305105c1-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegCurvetoCubicSmoothRel {
    [default] dispinterface DispSVGPathSegCurvetoCubicSmoothRel;
    interface ISVGPathSeg;
    interface ISVGPathSegCurvetoCubicSmoothRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegCurvetoCubicSmoothRel;")
  [hidden, uuid (3059001a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegCurvetoQuadraticAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_Y)] float y ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_X1)] void x1 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_X1)] float x1 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_Y1)] void y1 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_Y1)] float y1 ();
  };
  [noncreatable, uuid (305105c2-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegCurvetoQuadraticAbs {
    [default] dispinterface DispSVGPathSegCurvetoQuadraticAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegCurvetoQuadraticAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegCurvetoQuadraticAbs;")
  [hidden, uuid (3059001b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegCurvetoQuadraticRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_Y)] float y ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_X1)] void x1 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_X1)] float x1 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_Y1)] void y1 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_Y1)] float y1 ();
  };
  [noncreatable, uuid (305105c3-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegCurvetoQuadraticRel {
    [default] dispinterface DispSVGPathSegCurvetoQuadraticRel;
    interface ISVGPathSeg;
    interface ISVGPathSegCurvetoQuadraticRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegCurvetoQuadraticRel;")
  [hidden, uuid (3059001c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegCurvetoQuadraticSmoothAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHABS_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHABS_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHABS_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHABS_Y)] float y ();
  };
  [noncreatable, uuid (305105c4-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegCurvetoQuadraticSmoothAbs {
    [default] dispinterface DispSVGPathSegCurvetoQuadraticSmoothAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegCurvetoQuadraticSmoothAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegCurvetoQuadraticSmoothAbs;")
  [hidden, uuid (3059001d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegCurvetoQuadraticSmoothRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHREL_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHREL_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHREL_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHREL_Y)] float y ();
  };
  [noncreatable, uuid (305105c5-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegCurvetoQuadraticSmoothRel {
    [default] dispinterface DispSVGPathSegCurvetoQuadraticSmoothRel;
    interface ISVGPathSeg;
    interface ISVGPathSegCurvetoQuadraticSmoothRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegCurvetoQuadraticSmoothRel;")
  [hidden, uuid (3059001f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegLinetoHorizontalAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGLINETOHORIZONTALABS_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOHORIZONTALABS_X)] float x ();
  };
  [noncreatable, uuid (305105c7-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegLinetoHorizontalAbs {
    [default] dispinterface DispSVGPathSegLinetoHorizontalAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegLinetoHorizontalAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegLinetoHorizontalAbs;")
  [hidden, uuid (30590020-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegLinetoHorizontalRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGLINETOHORIZONTALREL_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOHORIZONTALREL_X)] float x ();
  };
  [noncreatable, uuid (305105c8-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegLinetoHorizontalRel {
    [default] dispinterface DispSVGPathSegLinetoHorizontalRel;
    interface ISVGPathSeg;
    interface ISVGPathSegLinetoHorizontalRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegLinetoHorizontalRel;")
  [hidden, uuid (30590022-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegLinetoVerticalAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGLINETOVERTICALABS_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOVERTICALABS_Y)] float y ();
  };
  [noncreatable, uuid (305105ca-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegLinetoVerticalAbs {
    [default] dispinterface DispSVGPathSegLinetoVerticalAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegLinetoVerticalAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegLinetoVerticalAbs;")
  [hidden, uuid (30590023-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegLinetoVerticalRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGLINETOVERTICALREL_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOVERTICALREL_Y)] float y ();
  };
  [noncreatable, uuid (305105cb-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegLinetoVerticalRel {
    [default] dispinterface DispSVGPathSegLinetoVerticalRel;
    interface ISVGPathSeg;
    interface ISVGPathSegLinetoVerticalRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegLinetoVerticalRel;")
  interface ISVGPathSeg;
  [odl, oleautomation, dual, uuid (30510510-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegList : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGLIST_NUMBEROFITEMS)] HRESULT numberOfItems ([in] long v);
    [propget, id (DISPID_ISVGPATHSEGLIST_NUMBEROFITEMS)] HRESULT numberOfItems ([retval, out] long *p);
    [id (DISPID_ISVGPATHSEGLIST_CLEAR)] HRESULT clear ();
    [id (DISPID_ISVGPATHSEGLIST_INITIALIZE)] HRESULT initialize ([in] ISVGPathSeg *newItem,[retval, out] ISVGPathSeg **ppResult);
    [id (DISPID_ISVGPATHSEGLIST_GETITEM)] HRESULT getItem ([in] long index,[retval, out] ISVGPathSeg **ppResult);
    [id (DISPID_ISVGPATHSEGLIST_INSERTITEMBEFORE)] HRESULT insertItemBefore ([in] ISVGPathSeg *newItem,[in] long index,[retval, out] ISVGPathSeg **ppResult);
    [id (DISPID_ISVGPATHSEGLIST_REPLACEITEM)] HRESULT replaceItem ([in] ISVGPathSeg *newItem,[in] long index,[retval, out] ISVGPathSeg **ppResult);
    [id (DISPID_ISVGPATHSEGLIST_REMOVEITEM)] HRESULT removeItem ([in] long index,[retval, out] ISVGPathSeg **ppResult);
    [id (DISPID_ISVGPATHSEGLIST_APPENDITEM)] HRESULT appendItem ([in] ISVGPathSeg *newItem,[retval, out] ISVGPathSeg **ppResult);
  };
  [noncreatable, uuid (305105b4-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegList {
    [default] interface ISVGPathSegList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegList;")
  interface ISVGMatrix;
  [odl, oleautomation, dual, uuid (305104f4-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPoint : IDispatch {
    [propput, id (DISPID_ISVGPOINT_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPOINT_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPOINT_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPOINT_Y)] HRESULT y ([retval, out] float *p);
    [id (DISPID_ISVGPOINT_MATRIXTRANSFORM)] HRESULT matrixTransform ([in] ISVGMatrix *pMatrix,[retval, out] ISVGPoint **ppResult);
  };
  [noncreatable, uuid (305105ba-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPoint {
    [default] interface ISVGPoint;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPoint;")
  interface ISVGPoint;
  [odl, oleautomation, dual, uuid (305104f5-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPointList : IDispatch {
    [propput, id (DISPID_ISVGPOINTLIST_NUMBEROFITEMS)] HRESULT numberOfItems ([in] long v);
    [propget, id (DISPID_ISVGPOINTLIST_NUMBEROFITEMS)] HRESULT numberOfItems ([retval, out] long *p);
    [id (DISPID_ISVGPOINTLIST_CLEAR)] HRESULT clear ();
    [id (DISPID_ISVGPOINTLIST_INITIALIZE)] HRESULT initialize ([in] ISVGPoint *pNewItem,[retval, out] ISVGPoint **ppResult);
    [id (DISPID_ISVGPOINTLIST_GETITEM)] HRESULT getItem ([in] long index,[retval, out] ISVGPoint **ppResult);
    [id (DISPID_ISVGPOINTLIST_INSERTITEMBEFORE)] HRESULT insertItemBefore ([in] ISVGPoint *pNewItem,[in] long index,[retval, out] ISVGPoint **ppResult);
    [id (DISPID_ISVGPOINTLIST_REPLACEITEM)] HRESULT replaceItem ([in] ISVGPoint *pNewItem,[in] long index,[retval, out] ISVGPoint **ppResult);
    [id (DISPID_ISVGPOINTLIST_REMOVEITEM)] HRESULT removeItem ([in] long index,[retval, out] ISVGPoint **ppResult);
    [id (DISPID_ISVGPOINTLIST_APPENDITEM)] HRESULT appendItem ([in] ISVGPoint *pNewItem,[retval, out] ISVGPoint **ppResult);
  };
  [noncreatable, uuid (305105b9-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPointList {
    [default] interface ISVGPointList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPointList;")
  [odl, oleautomation, dual, uuid (305104d7-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGRect : IDispatch {
    [propput, id (DISPID_ISVGRECT_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGRECT_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGRECT_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGRECT_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGRECT_WIDTH)] HRESULT width ([in] float v);
    [propget, id (DISPID_ISVGRECT_WIDTH)] HRESULT width ([retval, out] float *p);
    [propput, id (DISPID_ISVGRECT_HEIGHT)] HRESULT height ([in] float v);
    [propget, id (DISPID_ISVGRECT_HEIGHT)] HRESULT height ([retval, out] float *p);
  };
  [noncreatable, uuid (30510583-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGRect {
    [default] interface ISVGRect;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGRect;")
  [odl, oleautomation, dual, uuid (305104c8-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGStringList : IDispatch {
    [propput, id (DISPID_ISVGSTRINGLIST_NUMBEROFITEMS)] HRESULT numberOfItems ([in] long v);
    [propget, id (DISPID_ISVGSTRINGLIST_NUMBEROFITEMS)] HRESULT numberOfItems ([retval, out] long *p);
    [id (DISPID_ISVGSTRINGLIST_CLEAR)] HRESULT clear ();
    [id (DISPID_ISVGSTRINGLIST_INITIALIZE)] HRESULT initialize ([in] BSTR newItem,[retval, out] BSTR *ppResult);
    [id (DISPID_ISVGSTRINGLIST_GETITEM)] HRESULT getItem ([in] long index,[retval, out] BSTR *ppResult);
    [id (DISPID_ISVGSTRINGLIST_INSERTITEMBEFORE)] HRESULT insertItemBefore ([in] BSTR newItem,[in] long index,[retval, out] BSTR *ppResult);
    [id (DISPID_ISVGSTRINGLIST_REPLACEITEM)] HRESULT replaceItem ([in] BSTR newItem,[in] long index,[retval, out] BSTR *ppResult);
    [id (DISPID_ISVGSTRINGLIST_REMOVEITEM)] HRESULT removeItem ([in] long index,[retval, out] BSTR *ppResult);
    [id (DISPID_ISVGSTRINGLIST_APPENDITEM)] HRESULT appendItem ([in] BSTR newItem,[retval, out] BSTR *ppResult);
  };
  [noncreatable, uuid (3051058d-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGStringList {
    [default] interface ISVGStringList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGStringList;")
  [odl, oleautomation, dual, uuid (305104e2-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGViewSpec : IDispatch {
  };
  typedef enum _svgTransformType {
    SVG_TRANSFORM_UNKNOWN = 0,
    SVG_TRANSFORM_MATRIX = 1,
    SVG_TRANSFORM_TRANSLATE = 2,
    SVG_TRANSFORM_SCALE = 3,
    SVG_TRANSFORM_ROTATE = 4,
    SVG_TRANSFORM_SKEWX = 5,
    SVG_TRANSFORM_SKEWY = 6,
    svgTransformType_Max = 0x7FFFFFFF
  } svgTransformType;
  interface ISVGMatrix;
  [odl, oleautomation, dual, uuid (305104f7-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGTransform : IDispatch {
    [propput, id (DISPID_ISVGTRANSFORM_TYPE)] HRESULT type ([in] short v);
    [propget, id (DISPID_ISVGTRANSFORM_TYPE)] HRESULT type ([retval, out] short *p);
    [propputref, id (DISPID_ISVGTRANSFORM_MATRIX)] HRESULT matrix ([in] ISVGMatrix *v);
    [propget, id (DISPID_ISVGTRANSFORM_MATRIX)] HRESULT matrix ([retval, out] ISVGMatrix **p);
    [propput, id (DISPID_ISVGTRANSFORM_ANGLE)] HRESULT angle ([in] float v);
    [propget, id (DISPID_ISVGTRANSFORM_ANGLE)] HRESULT angle ([retval, out] float *p);
    [id (DISPID_ISVGTRANSFORM_SETMATRIX)] HRESULT setMatrix ([in] ISVGMatrix *matrix);
    [id (DISPID_ISVGTRANSFORM_SETTRANSLATE)] HRESULT setTranslate ([in] float tx,[in] float ty);
    [id (DISPID_ISVGTRANSFORM_SETSCALE)] HRESULT setScale ([in] float sx,[in] float sy);
    [id (DISPID_ISVGTRANSFORM_SETROTATE)] HRESULT setRotate ([in] float angle,[in] float cx,[in] float cy);
    [id (DISPID_ISVGTRANSFORM_SETSKEWX)] HRESULT setSkewX ([in] float angle);
    [id (DISPID_ISVGTRANSFORM_SETSKEWY)] HRESULT setSkewY ([in] float angle);
  };
  [noncreatable, uuid (305105af-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGTransform {
    [default] interface ISVGTransform;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGTransform;")
  interface IHTMLElement;
  [odl, oleautomation, dual, uuid (305104e7-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGSVGElement : IDispatch {
    [propputref, id (DISPID_ISVGSVGELEMENT_X)] HRESULT x ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGSVGELEMENT_X)] HRESULT x ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGSVGELEMENT_Y)] HRESULT y ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGSVGELEMENT_Y)] HRESULT y ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGSVGELEMENT_WIDTH)] HRESULT width ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGSVGELEMENT_WIDTH)] HRESULT width ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGSVGELEMENT_HEIGHT)] HRESULT height ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGSVGELEMENT_HEIGHT)] HRESULT height ([retval, out] ISVGAnimatedLength **p);
    [propput, id (DISPID_ISVGSVGELEMENT_CONTENTSCRIPTTYPE)] HRESULT contentScriptType ([in] BSTR v);
    [propget, id (DISPID_ISVGSVGELEMENT_CONTENTSCRIPTTYPE)] HRESULT contentScriptType ([retval, out] BSTR *p);
    [propput, id (DISPID_ISVGSVGELEMENT_CONTENTSTYLETYPE)] HRESULT contentStyleType ([in] BSTR v);
    [propget, id (DISPID_ISVGSVGELEMENT_CONTENTSTYLETYPE)] HRESULT contentStyleType ([retval, out] BSTR *p);
    [propputref, id (DISPID_ISVGSVGELEMENT_VIEWPORT)] HRESULT viewport ([in] ISVGRect *v);
    [propget, id (DISPID_ISVGSVGELEMENT_VIEWPORT)] HRESULT viewport ([retval, out] ISVGRect **p);
    [propput, id (DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERX)] HRESULT pixelUnitToMillimeterX ([in] float v);
    [propget, id (DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERX)] HRESULT pixelUnitToMillimeterX ([retval, out] float *p);
    [propput, id (DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERY)] HRESULT pixelUnitToMillimeterY ([in] float v);
    [propget, id (DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERY)] HRESULT pixelUnitToMillimeterY ([retval, out] float *p);
    [propput, id (DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERX)] HRESULT screenPixelToMillimeterX ([in] float v);
    [propget, id (DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERX)] HRESULT screenPixelToMillimeterX ([retval, out] float *p);
    [propput, id (DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERY)] HRESULT screenPixelToMillimeterY ([in] float v);
    [propget, id (DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERY)] HRESULT screenPixelToMillimeterY ([retval, out] float *p);
    [propput, id (DISPID_ISVGSVGELEMENT_USECURRENTVIEW)] HRESULT useCurrentView ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ISVGSVGELEMENT_USECURRENTVIEW)] HRESULT useCurrentView ([retval, out] VARIANT_BOOL *p);
    [propputref, id (DISPID_ISVGSVGELEMENT_CURRENTVIEW)] HRESULT currentView ([in] ISVGViewSpec *v);
    [propget, id (DISPID_ISVGSVGELEMENT_CURRENTVIEW)] HRESULT currentView ([retval, out] ISVGViewSpec **p);
    [propput, id (DISPID_ISVGSVGELEMENT_CURRENTSCALE)] HRESULT currentScale ([in] float v);
    [propget, id (DISPID_ISVGSVGELEMENT_CURRENTSCALE)] HRESULT currentScale ([retval, out] float *p);
    [propputref, id (DISPID_ISVGSVGELEMENT_CURRENTTRANSLATE)] HRESULT currentTranslate ([in] ISVGPoint *v);
    [propget, id (DISPID_ISVGSVGELEMENT_CURRENTTRANSLATE)] HRESULT currentTranslate ([retval, out] ISVGPoint **p);
    [id (DISPID_ISVGSVGELEMENT_SUSPENDREDRAW)] HRESULT suspendRedraw ([in] ULONG maxWaitMilliseconds,[retval, out] ULONG *pResult);
    [id (DISPID_ISVGSVGELEMENT_UNSUSPENDREDRAW)] HRESULT unsuspendRedraw ([in] ULONG suspendHandeID);
    [id (DISPID_ISVGSVGELEMENT_UNSUSPENDREDRAWALL)] HRESULT unsuspendRedrawAll ();
    [id (DISPID_ISVGSVGELEMENT_FORCEREDRAW)] HRESULT forceRedraw ();
    [id (DISPID_ISVGSVGELEMENT_PAUSEANIMATIONS)] HRESULT pauseAnimations ();
    [id (DISPID_ISVGSVGELEMENT_UNPAUSEANIMATIONS)] HRESULT unpauseAnimations ();
    [id (DISPID_ISVGSVGELEMENT_ANIMATIONSPAUSED)] HRESULT animationsPaused ([retval, out] VARIANT_BOOL *pResult);
    [id (DISPID_ISVGSVGELEMENT_GETCURRENTTIME)] HRESULT getCurrentTime ([retval, out] float *pResult);
    [id (DISPID_ISVGSVGELEMENT_SETCURRENTTIME)] HRESULT setCurrentTime ([in] float seconds);
    [id (DISPID_ISVGSVGELEMENT_GETINTERSECTIONLIST)] HRESULT getIntersectionList ([in] ISVGRect *rect,[in] ISVGElement *referenceElement,[retval, out] VARIANT *pResult);
    [id (DISPID_ISVGSVGELEMENT_GETENCLOSURELIST)] HRESULT getEnclosureList ([in] ISVGRect *rect,[in] ISVGElement *referenceElement,[retval, out] VARIANT *pResult);
    [id (DISPID_ISVGSVGELEMENT_CHECKINTERSECTION)] HRESULT checkIntersection ([in] ISVGElement *element,[in] ISVGRect *rect,[retval, out] VARIANT_BOOL *pResult);
    [id (DISPID_ISVGSVGELEMENT_CHECKENCLOSURE)] HRESULT checkEnclosure ([in] ISVGElement *element,[in] ISVGRect *rect,[retval, out] VARIANT_BOOL *pResult);
    [id (DISPID_ISVGSVGELEMENT_DESELECTALL)] HRESULT deselectAll ();
    [id (DISPID_ISVGSVGELEMENT_CREATESVGNUMBER)] HRESULT createSVGNumber ([retval, out] ISVGNumber **pResult);
    [id (DISPID_ISVGSVGELEMENT_CREATESVGLENGTH)] HRESULT createSVGLength ([retval, out] ISVGLength **pResult);
    [id (DISPID_ISVGSVGELEMENT_CREATESVGANGLE)] HRESULT createSVGAngle ([retval, out] ISVGAngle **pResult);
    [id (DISPID_ISVGSVGELEMENT_CREATESVGPOINT)] HRESULT createSVGPoint ([retval, out] ISVGPoint **pResult);
    [id (DISPID_ISVGSVGELEMENT_CREATESVGMATRIX)] HRESULT createSVGMatrix ([retval, out] ISVGMatrix **pResult);
    [id (DISPID_ISVGSVGELEMENT_CREATESVGRECT)] HRESULT createSVGRect ([retval, out] ISVGRect **pResult);
    [id (DISPID_ISVGSVGELEMENT_CREATESVGTRANSFORM)] HRESULT createSVGTransform ([retval, out] ISVGTransform **pResult);
    [id (DISPID_ISVGSVGELEMENT_CREATESVGTRANSFORMFROMMATRIX)] HRESULT createSVGTransformFromMatrix ([in] ISVGMatrix *matrix,[retval, out] ISVGTransform **pResult);
    [id (DISPID_ISVGSVGELEMENT_GETELEMENTBYID)] HRESULT getElementById ([in] BSTR elementId,[retval, out] IHTMLElement **pResult);
  };
  [hidden, uuid (30590001-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGSVGElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGSVGELEMENT_X)] void x (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGSVGELEMENT_X)] ISVGAnimatedLength *x ();
    [propputref, id (DISPID_ISVGSVGELEMENT_Y)] void y (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGSVGELEMENT_Y)] ISVGAnimatedLength *y ();
    [propputref, id (DISPID_ISVGSVGELEMENT_WIDTH)] void width (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGSVGELEMENT_WIDTH)] ISVGAnimatedLength *width ();
    [propputref, id (DISPID_ISVGSVGELEMENT_HEIGHT)] void height (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGSVGELEMENT_HEIGHT)] ISVGAnimatedLength *height ();
    [propput, id (DISPID_ISVGSVGELEMENT_CONTENTSCRIPTTYPE)] void contentScriptType (BSTR v);
    [propget, id (DISPID_ISVGSVGELEMENT_CONTENTSCRIPTTYPE)] BSTR contentScriptType ();
    [propput, id (DISPID_ISVGSVGELEMENT_CONTENTSTYLETYPE)] void contentStyleType (BSTR v);
    [propget, id (DISPID_ISVGSVGELEMENT_CONTENTSTYLETYPE)] BSTR contentStyleType ();
    [propputref, id (DISPID_ISVGSVGELEMENT_VIEWPORT)] void viewport (ISVGRect *v);
    [propget, id (DISPID_ISVGSVGELEMENT_VIEWPORT)] ISVGRect *viewport ();
    [propput, id (DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERX)] void pixelUnitToMillimeterX (float v);
    [propget, id (DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERX)] float pixelUnitToMillimeterX ();
    [propput, id (DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERY)] void pixelUnitToMillimeterY (float v);
    [propget, id (DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERY)] float pixelUnitToMillimeterY ();
    [propput, id (DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERX)] void screenPixelToMillimeterX (float v);
    [propget, id (DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERX)] float screenPixelToMillimeterX ();
    [propput, id (DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERY)] void screenPixelToMillimeterY (float v);
    [propget, id (DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERY)] float screenPixelToMillimeterY ();
    [propput, id (DISPID_ISVGSVGELEMENT_USECURRENTVIEW)] void useCurrentView (VARIANT_BOOL v);
    [propget, id (DISPID_ISVGSVGELEMENT_USECURRENTVIEW)] VARIANT_BOOL useCurrentView ();
    [propputref, id (DISPID_ISVGSVGELEMENT_CURRENTVIEW)] void currentView (ISVGViewSpec *v);
    [propget, id (DISPID_ISVGSVGELEMENT_CURRENTVIEW)] ISVGViewSpec *currentView ();
    [propput, id (DISPID_ISVGSVGELEMENT_CURRENTSCALE)] void currentScale (float v);
    [propget, id (DISPID_ISVGSVGELEMENT_CURRENTSCALE)] float currentScale ();
    [propputref, id (DISPID_ISVGSVGELEMENT_CURRENTTRANSLATE)] void currentTranslate (ISVGPoint *v);
    [propget, id (DISPID_ISVGSVGELEMENT_CURRENTTRANSLATE)] ISVGPoint *currentTranslate ();
    [id (DISPID_ISVGSVGELEMENT_SUSPENDREDRAW)] ULONG suspendRedraw ([in] ULONG maxWaitMilliseconds);
    [id (DISPID_ISVGSVGELEMENT_UNSUSPENDREDRAW)] void unsuspendRedraw ([in] ULONG suspendHandeID);
    [id (DISPID_ISVGSVGELEMENT_UNSUSPENDREDRAWALL)] void unsuspendRedrawAll ();
    [id (DISPID_ISVGSVGELEMENT_FORCEREDRAW)] void forceRedraw ();
    [id (DISPID_ISVGSVGELEMENT_PAUSEANIMATIONS)] void pauseAnimations ();
    [id (DISPID_ISVGSVGELEMENT_UNPAUSEANIMATIONS)] void unpauseAnimations ();
    [id (DISPID_ISVGSVGELEMENT_ANIMATIONSPAUSED)] VARIANT_BOOL animationsPaused ();
    [id (DISPID_ISVGSVGELEMENT_GETCURRENTTIME)] float getCurrentTime ();
    [id (DISPID_ISVGSVGELEMENT_SETCURRENTTIME)] void setCurrentTime ([in] float seconds);
    [id (DISPID_ISVGSVGELEMENT_GETINTERSECTIONLIST)] VARIANT getIntersectionList ([in] ISVGRect *rect,[in] ISVGElement *referenceElement);
    [id (DISPID_ISVGSVGELEMENT_GETENCLOSURELIST)] VARIANT getEnclosureList ([in] ISVGRect *rect,[in] ISVGElement *referenceElement);
    [id (DISPID_ISVGSVGELEMENT_CHECKINTERSECTION)] VARIANT_BOOL checkIntersection ([in] ISVGElement *element,[in] ISVGRect *rect);
    [id (DISPID_ISVGSVGELEMENT_CHECKENCLOSURE)] VARIANT_BOOL checkEnclosure ([in] ISVGElement *element,[in] ISVGRect *rect);
    [id (DISPID_ISVGSVGELEMENT_DESELECTALL)] void deselectAll ();
    [id (DISPID_ISVGSVGELEMENT_CREATESVGNUMBER)] ISVGNumber *createSVGNumber ();
    [id (DISPID_ISVGSVGELEMENT_CREATESVGLENGTH)] ISVGLength *createSVGLength ();
    [id (DISPID_ISVGSVGELEMENT_CREATESVGANGLE)] ISVGAngle *createSVGAngle ();
    [id (DISPID_ISVGSVGELEMENT_CREATESVGPOINT)] ISVGPoint *createSVGPoint ();
    [id (DISPID_ISVGSVGELEMENT_CREATESVGMATRIX)] ISVGMatrix *createSVGMatrix ();
    [id (DISPID_ISVGSVGELEMENT_CREATESVGRECT)] ISVGRect *createSVGRect ();
    [id (DISPID_ISVGSVGELEMENT_CREATESVGTRANSFORM)] ISVGTransform *createSVGTransform ();
    [id (DISPID_ISVGSVGELEMENT_CREATESVGTRANSFORMFROMMATRIX)] ISVGTransform *createSVGTransformFromMatrix ([in] ISVGMatrix *matrix);
    [id (DISPID_ISVGSVGELEMENT_GETELEMENTBYID)] IHTMLElement *getElementById ([in] BSTR elementId);
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] void xmllang (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] BSTR xmllang ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] void xmlspace (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] BSTR xmlspace ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] ISVGElement *nearestViewportElement ();
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] ISVGElement *farthestViewportElement ();
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] ISVGRect *getBBox ();
    [id (DISPID_ISVGLOCATABLE_GETCTM)] ISVGMatrix *getCTM ();
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] ISVGMatrix *getScreenCTM ();
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] ISVGMatrix *getTransformToElement ([in] ISVGElement *pElement);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_VIEWBOX)] ISVGAnimatedRect *viewBox ();
    [propputref, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] void preserveAspectRatio (ISVGAnimatedPreserveAspectRatio *v);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] ISVGAnimatedPreserveAspectRatio *preserveAspectRatio ();
    [propget, id (DISPID_ISVGZOOMANDPAN_ZOOMANDPAN)] short zoomAndPan ();
  };
  [noncreatable, uuid (30510574-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGSVGElement {
    [default] dispinterface DispSVGSVGElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGSVGElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGLocatable;
    interface ISVGFitToViewBox;
    interface ISVGZoomAndPan;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGSVGElement;")
  interface ISVGElementInstance;
  [odl, oleautomation, dual, uuid (305104ed-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGUseElement : IDispatch {
    [propputref, id (DISPID_ISVGUSEELEMENT_X)] HRESULT x ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGUSEELEMENT_X)] HRESULT x ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGUSEELEMENT_Y)] HRESULT y ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGUSEELEMENT_Y)] HRESULT y ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGUSEELEMENT_WIDTH)] HRESULT width ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGUSEELEMENT_WIDTH)] HRESULT width ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGUSEELEMENT_HEIGHT)] HRESULT height ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGUSEELEMENT_HEIGHT)] HRESULT height ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGUSEELEMENT_INSTANCEROOT)] HRESULT instanceRoot ([in] ISVGElementInstance *v);
    [propget, id (DISPID_ISVGUSEELEMENT_INSTANCEROOT)] HRESULT instanceRoot ([retval, out] ISVGElementInstance **p);
    [propputref, id (DISPID_ISVGUSEELEMENT_ANIMATEDINSTANCEROOT)] HRESULT animatedInstanceRoot ([in] ISVGElementInstance *v);
    [propget, id (DISPID_ISVGUSEELEMENT_ANIMATEDINSTANCEROOT)] HRESULT animatedInstanceRoot ([retval, out] ISVGElementInstance **p);
  };
  [hidden, uuid (30590010-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGUseElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGUSEELEMENT_X)] void x (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGUSEELEMENT_X)] ISVGAnimatedLength *x ();
    [propputref, id (DISPID_ISVGUSEELEMENT_Y)] void y (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGUSEELEMENT_Y)] ISVGAnimatedLength *y ();
    [propputref, id (DISPID_ISVGUSEELEMENT_WIDTH)] void width (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGUSEELEMENT_WIDTH)] ISVGAnimatedLength *width ();
    [propputref, id (DISPID_ISVGUSEELEMENT_HEIGHT)] void height (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGUSEELEMENT_HEIGHT)] ISVGAnimatedLength *height ();
    [propputref, id (DISPID_ISVGUSEELEMENT_INSTANCEROOT)] void instanceRoot (ISVGElementInstance *v);
    [propget, id (DISPID_ISVGUSEELEMENT_INSTANCEROOT)] ISVGElementInstance *instanceRoot ();
    [propputref, id (DISPID_ISVGUSEELEMENT_ANIMATEDINSTANCEROOT)] void animatedInstanceRoot (ISVGElementInstance *v);
    [propget, id (DISPID_ISVGUSEELEMENT_ANIMATEDINSTANCEROOT)] ISVGElementInstance *animatedInstanceRoot ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] ISVGElement *nearestViewportElement ();
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] ISVGElement *farthestViewportElement ();
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] ISVGRect *getBBox ();
    [id (DISPID_ISVGLOCATABLE_GETCTM)] ISVGMatrix *getCTM ();
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] ISVGMatrix *getScreenCTM ();
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] ISVGMatrix *getTransformToElement ([in] ISVGElement *pElement);
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
  };
  [noncreatable, uuid (30510590-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGUseElement {
    [default] dispinterface DispSVGUseElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGUseElement;
    interface ISVGTransformable;
    interface ISVGLocatable;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGURIReference;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGUseElement;")
  interface IHTMLStyleSheetRulesAppliedCollection;
  interface IRulesApplied;
  interface IRulesAppliedCollection;
  [odl, oleautomation, dual, uuid (305104c0-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleSheetRulesAppliedCollection : IDispatch {
    [id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] IHTMLStyleSheetRule **ppHTMLStyleSheetRule);
    [propget, id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_PROPERTYAPPLIEDBY)] HRESULT propertyAppliedBy ([in] BSTR name,[retval, out] IHTMLStyleSheetRule **ppRule);
    [id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_PROPERTYAPPLIEDTRACE)] HRESULT propertyAppliedTrace ([in] BSTR name,[in] long index,[retval, out] IHTMLStyleSheetRule **ppRule);
    [id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_PROPERTYAPPLIEDTRACELENGTH)] HRESULT propertyAppliedTraceLength ([in] BSTR name,[retval, out] long *pLength);
  };
  [odl, oleautomation, dual, uuid (305104bf-98b5-11cf-bb82-00aa00bdce0b)] interface IRulesApplied : IDispatch {
    [propget, id (DISPID_IRULESAPPLIED_ELEMENT)] HRESULT element ([retval, out] IHTMLElement **p);
    [propget, id (DISPID_IRULESAPPLIED_INLINESTYLES)] HRESULT inlineStyles ([retval, out] IHTMLStyle **p);
    [propget, id (DISPID_IRULESAPPLIED_APPLIEDRULES)] HRESULT appliedRules ([retval, out] IHTMLStyleSheetRulesAppliedCollection **p);
    [id (DISPID_IRULESAPPLIED_PROPERTYISINLINE)] HRESULT propertyIsInline ([in] BSTR name,[retval, out] VARIANT_BOOL *p);
    [id (DISPID_IRULESAPPLIED_PROPERTYISINHERITABLE)] HRESULT propertyIsInheritable ([in] BSTR name,[retval, out] VARIANT_BOOL *p);
    [id (DISPID_IRULESAPPLIED_HASINHERITABLEPROPERTY)] HRESULT hasInheritableProperty ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (305104be-98b5-11cf-bb82-00aa00bdce0b)] interface IRulesAppliedCollection : IDispatch {
    [id (DISPID_IRULESAPPLIEDCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] IRulesApplied **ppRulesApplied);
    [propget, id (DISPID_IRULESAPPLIEDCOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IRULESAPPLIEDCOLLECTION_ELEMENT)] HRESULT element ([retval, out] IHTMLElement **p);
    [id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTYINHERITEDFROM)] HRESULT propertyInheritedFrom ([in] BSTR name,[retval, out] IRulesApplied **ppRulesApplied);
    [propget, id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTYCOUNT)] HRESULT propertyCount ([retval, out] long *p);
    [id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTY)] HRESULT property ([in] long index,[retval, out] BSTR *pbstrProperty);
    [id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTYINHERITEDTRACE)] HRESULT propertyInheritedTrace ([in] BSTR name,[in] long index,[retval, out] IRulesApplied **ppRulesApplied);
    [id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTYINHERITEDTRACELENGTH)] HRESULT propertyInheritedTraceLength ([in] BSTR name,[retval, out] long *pLength);
  };
  [hidden, uuid (3050f5a6-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLStyleSheetRulesAppliedCollection {
    properties:
    methods:
    [id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_ITEM)] IHTMLStyleSheetRule *item ([in] long index);
    [propget, id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_LENGTH)] long length ();
    [id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_PROPERTYAPPLIEDBY)] IHTMLStyleSheetRule *propertyAppliedBy ([in] BSTR name);
    [id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_PROPERTYAPPLIEDTRACE)] IHTMLStyleSheetRule *propertyAppliedTrace ([in] BSTR name,[in] long index);
    [id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_PROPERTYAPPLIEDTRACELENGTH)] long propertyAppliedTraceLength ([in] BSTR name);
  };
  [noncreatable, uuid (eb36f845-2395-4719-b85c-d0d80e184bd9)] coclass HTMLStyleSheetRulesAppliedCollection {
    [default] dispinterface DispHTMLStyleSheetRulesAppliedCollection;
    interface IHTMLStyleSheetRulesAppliedCollection;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CHTMLStyleSheetRulesAppliedCollection;")
  [hidden, uuid (3050f5a5-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispRulesApplied {
    properties:
    methods:
    [propget, id (DISPID_IRULESAPPLIED_ELEMENT)] IHTMLElement *element ();
    [propget, id (DISPID_IRULESAPPLIED_INLINESTYLES)] IHTMLStyle *inlineStyles ();
    [propget, id (DISPID_IRULESAPPLIED_APPLIEDRULES)] IHTMLStyleSheetRulesAppliedCollection *appliedRules ();
    [id (DISPID_IRULESAPPLIED_PROPERTYISINLINE)] VARIANT_BOOL propertyIsInline ([in] BSTR name);
    [id (DISPID_IRULESAPPLIED_PROPERTYISINHERITABLE)] VARIANT_BOOL propertyIsInheritable ([in] BSTR name);
    [id (DISPID_IRULESAPPLIED_HASINHERITABLEPROPERTY)] VARIANT_BOOL hasInheritableProperty ();
  };
  [noncreatable, uuid (7c803920-7a53-4d26-98ac-fdd23e6b9e01)] coclass RulesApplied {
    [default] dispinterface DispRulesApplied;
    interface IRulesApplied;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CRulesApplied;")
  [hidden, uuid (3050f5a4-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispRulesAppliedCollection {
    properties:
    methods:
    [id (DISPID_IRULESAPPLIEDCOLLECTION_ITEM)] IRulesApplied *item ([in] long index);
    [propget, id (DISPID_IRULESAPPLIEDCOLLECTION_LENGTH)] long length ();
    [propget, id (DISPID_IRULESAPPLIEDCOLLECTION_ELEMENT)] IHTMLElement *element ();
    [id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTYINHERITEDFROM)] IRulesApplied *propertyInheritedFrom ([in] BSTR name);
    [propget, id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTYCOUNT)] long propertyCount ();
    [id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTY)] BSTR property ([in] long index);
    [id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTYINHERITEDTRACE)] IRulesApplied *propertyInheritedTrace ([in] BSTR name,[in] long index);
    [id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTYINHERITEDTRACELENGTH)] long propertyInheritedTraceLength ([in] BSTR name);
  };
  [noncreatable, uuid (671926ee-c3cf-40af-be8f-1cbaee6486e8)] coclass RulesAppliedCollection {
    [default] dispinterface DispRulesAppliedCollection;
    interface IRulesAppliedCollection;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CRulesAppliedCollection;")
  [hidden, uuid (30590070-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLW3CComputedStyle {
    properties:
    methods:
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LENGTH)] long length ();
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PARENTRULE)] VARIANT parentRule ();
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYVALUE)] BSTR getPropertyValue ([in] BSTR bstrPropertyName);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYPRIORITY)] BSTR getPropertyPriority ([in] BSTR bstrPropertyName);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_REMOVEPROPERTY)] BSTR removeProperty ([in] BSTR bstrPropertyName);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_SETPROPERTY)] void setProperty ([in] BSTR bstrPropertyName,[in] VARIANT *pvarPropertyValue,[defaultvalue (NULL), in] VARIANT *pvarPropertyPriority);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_ITEM)] BSTR item ([in] long index);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTFAMILY), displaybind, bindable] void fontFamily (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTFAMILY), displaybind, bindable] BSTR fontFamily ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTYLE), displaybind, bindable] void fontStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTYLE), displaybind, bindable] BSTR fontStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTVARIANT), displaybind, bindable] void fontVariant (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTVARIANT), displaybind, bindable] BSTR fontVariant ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTWEIGHT), displaybind, bindable] void fontWeight (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTWEIGHT), displaybind, bindable] BSTR fontWeight ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZE), displaybind, bindable] void fontSize (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZE), displaybind, bindable] VARIANT fontSize ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONT), displaybind, bindable, nonbrowsable] void font (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONT), displaybind, bindable, nonbrowsable] BSTR font ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_COLOR), displaybind, bindable] void color (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_COLOR), displaybind, bindable] VARIANT color ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUND), displaybind, bindable, nonbrowsable] void background (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUND), displaybind, bindable, nonbrowsable] BSTR background ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCOLOR), displaybind, bindable] void backgroundColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCOLOR), displaybind, bindable] VARIANT backgroundColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDIMAGE), displaybind, bindable] void backgroundImage (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDIMAGE), displaybind, bindable] BSTR backgroundImage ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDREPEAT), displaybind, bindable] void backgroundRepeat (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDREPEAT), displaybind, bindable] BSTR backgroundRepeat ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDATTACHMENT), displaybind, bindable] void backgroundAttachment (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDATTACHMENT), displaybind, bindable] BSTR backgroundAttachment ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITION), displaybind, bindable] void backgroundPosition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITION), displaybind, bindable] BSTR backgroundPosition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONX), displaybind, bindable] void backgroundPositionX (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONX), displaybind, bindable] VARIANT backgroundPositionX ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONY), displaybind, bindable] void backgroundPositionY (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONY), displaybind, bindable] VARIANT backgroundPositionY ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDSPACING), displaybind, bindable] void wordSpacing (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDSPACING), displaybind, bindable] VARIANT wordSpacing ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LETTERSPACING), displaybind, bindable] void letterSpacing (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LETTERSPACING), displaybind, bindable] VARIANT letterSpacing ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTDECORATION), displaybind, bindable] void textDecoration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTDECORATION), displaybind, bindable] BSTR textDecoration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_VERTICALALIGN), displaybind, bindable] void verticalAlign (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_VERTICALALIGN), displaybind, bindable] VARIANT verticalAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTTRANSFORM), displaybind, bindable] void textTransform (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTTRANSFORM), displaybind, bindable] BSTR textTransform ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGN), displaybind, bindable] void textAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGN), displaybind, bindable] BSTR textAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTINDENT), displaybind, bindable] void textIndent (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTINDENT), displaybind, bindable] VARIANT textIndent ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LINEHEIGHT), displaybind, bindable] void lineHeight (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LINEHEIGHT), displaybind, bindable] VARIANT lineHeight ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINTOP), displaybind, bindable] void marginTop (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINTOP), displaybind, bindable] VARIANT marginTop ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINRIGHT), displaybind, bindable] void marginRight (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINRIGHT), displaybind, bindable] VARIANT marginRight ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINBOTTOM), displaybind, bindable] void marginBottom (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINBOTTOM), displaybind, bindable] VARIANT marginBottom ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINLEFT), displaybind, bindable] void marginLeft (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINLEFT), displaybind, bindable] VARIANT marginLeft ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGIN), displaybind, bindable, nonbrowsable] void margin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGIN), displaybind, bindable, nonbrowsable] BSTR margin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGTOP), displaybind, bindable] void paddingTop (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGTOP), displaybind, bindable] VARIANT paddingTop ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGRIGHT), displaybind, bindable] void paddingRight (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGRIGHT), displaybind, bindable] VARIANT paddingRight ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGBOTTOM), displaybind, bindable] void paddingBottom (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGBOTTOM), displaybind, bindable] VARIANT paddingBottom ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGLEFT), displaybind, bindable] void paddingLeft (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGLEFT), displaybind, bindable] VARIANT paddingLeft ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDING), displaybind, bindable, nonbrowsable] void padding (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDING), displaybind, bindable, nonbrowsable] BSTR padding ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDER), displaybind, bindable, nonbrowsable] void border (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDER), displaybind, bindable, nonbrowsable] BSTR border ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOP), displaybind, bindable] void borderTop (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOP), displaybind, bindable] BSTR borderTop ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHT), displaybind, bindable] void borderRight (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHT), displaybind, bindable] BSTR borderRight ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOM), displaybind, bindable] void borderBottom (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOM), displaybind, bindable] BSTR borderBottom ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFT), displaybind, bindable] void borderLeft (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFT), displaybind, bindable] BSTR borderLeft ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLOR), displaybind, bindable] void borderColor (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLOR), displaybind, bindable] BSTR borderColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPCOLOR), displaybind, bindable] void borderTopColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPCOLOR), displaybind, bindable] VARIANT borderTopColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTCOLOR), displaybind, bindable] void borderRightColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTCOLOR), displaybind, bindable] VARIANT borderRightColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMCOLOR), displaybind, bindable] void borderBottomColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMCOLOR), displaybind, bindable] VARIANT borderBottomColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTCOLOR), displaybind, bindable] void borderLeftColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTCOLOR), displaybind, bindable] VARIANT borderLeftColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERWIDTH), displaybind, bindable] void borderWidth (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERWIDTH), displaybind, bindable] BSTR borderWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPWIDTH), displaybind, bindable] void borderTopWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPWIDTH), displaybind, bindable] VARIANT borderTopWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTWIDTH), displaybind, bindable] void borderRightWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTWIDTH), displaybind, bindable] VARIANT borderRightWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMWIDTH), displaybind, bindable] void borderBottomWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMWIDTH), displaybind, bindable] VARIANT borderBottomWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTWIDTH), displaybind, bindable] void borderLeftWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTWIDTH), displaybind, bindable] VARIANT borderLeftWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSTYLE), displaybind, bindable] void borderStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSTYLE), displaybind, bindable] BSTR borderStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPSTYLE), displaybind, bindable] void borderTopStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPSTYLE), displaybind, bindable] BSTR borderTopStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTSTYLE), displaybind, bindable] void borderRightStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTSTYLE), displaybind, bindable] BSTR borderRightStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMSTYLE), displaybind, bindable] void borderBottomStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMSTYLE), displaybind, bindable] BSTR borderBottomStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTSTYLE), displaybind, bindable] void borderLeftStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTSTYLE), displaybind, bindable] BSTR borderLeftStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WIDTH), displaybind, bindable] void width (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WIDTH), displaybind, bindable] VARIANT width ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_HEIGHT), displaybind, bindable] void height (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_HEIGHT), displaybind, bindable] VARIANT height ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STYLEFLOAT), displaybind, bindable] void styleFloat (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STYLEFLOAT), displaybind, bindable] BSTR styleFloat ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLEAR), displaybind, bindable] void clear (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLEAR), displaybind, bindable] BSTR clear ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_DISPLAY), displaybind, bindable] void display (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_DISPLAY), displaybind, bindable] BSTR display ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_VISIBILITY), displaybind, bindable] void visibility (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_VISIBILITY), displaybind, bindable] BSTR visibility ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLETYPE), displaybind, bindable] void listStyleType (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLETYPE), displaybind, bindable] BSTR listStyleType ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEPOSITION), displaybind, bindable] void listStylePosition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEPOSITION), displaybind, bindable] BSTR listStylePosition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEIMAGE), displaybind, bindable] void listStyleImage (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEIMAGE), displaybind, bindable] BSTR listStyleImage ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLE), displaybind, bindable, nonbrowsable] void listStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLE), displaybind, bindable, nonbrowsable] BSTR listStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WHITESPACE), displaybind, bindable] void whiteSpace (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WHITESPACE), displaybind, bindable] BSTR whiteSpace ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TOP), displaybind, bindable] void top (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TOP), displaybind, bindable] VARIANT top ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LEFT), displaybind, bindable] void left (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LEFT), displaybind, bindable] VARIANT left ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ZINDEX), displaybind, bindable] void zIndex (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ZINDEX), displaybind, bindable] VARIANT zIndex ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOW), displaybind, bindable] void overflow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOW), displaybind, bindable] BSTR overflow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKBEFORE), displaybind, bindable] void pageBreakBefore (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKBEFORE), displaybind, bindable] BSTR pageBreakBefore ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKAFTER), displaybind, bindable] void pageBreakAfter (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKAFTER), displaybind, bindable] BSTR pageBreakAfter ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CSSTEXT), displaybind, bindable, nonbrowsable] void cssText (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CSSTEXT), displaybind, bindable, nonbrowsable] BSTR cssText ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CURSOR), displaybind, bindable] void cursor (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CURSOR), displaybind, bindable] BSTR cursor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIP), displaybind, bindable] void clip (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIP), displaybind, bindable] BSTR clip ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILTER), displaybind, bindable] void filter (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILTER), displaybind, bindable] BSTR filter ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TABLELAYOUT), displaybind, bindable] void tableLayout (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TABLELAYOUT), displaybind, bindable] BSTR tableLayout ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLLAPSE), displaybind, bindable] void borderCollapse (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLLAPSE), displaybind, bindable] BSTR borderCollapse ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_DIRECTION), displaybind, bindable] void direction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_DIRECTION), displaybind, bindable] BSTR direction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BEHAVIOR), displaybind, bindable] void behavior (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BEHAVIOR), displaybind, bindable] BSTR behavior ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_POSITION), displaybind, bindable] void position (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_POSITION), displaybind, bindable] BSTR position ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_UNICODEBIDI), displaybind, bindable] void unicodeBidi (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_UNICODEBIDI), displaybind, bindable] BSTR unicodeBidi ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOTTOM), displaybind, bindable] void bottom (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOTTOM), displaybind, bindable] VARIANT bottom ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_RIGHT), displaybind, bindable] void right (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_RIGHT), displaybind, bindable] VARIANT right ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_IMEMODE), displaybind, bindable] void imeMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_IMEMODE), displaybind, bindable] BSTR imeMode ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYALIGN), displaybind, bindable] void rubyAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYALIGN), displaybind, bindable] BSTR rubyAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYPOSITION), displaybind, bindable] void rubyPosition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYPOSITION), displaybind, bindable] BSTR rubyPosition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYOVERHANG), displaybind, bindable] void rubyOverhang (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYOVERHANG), displaybind, bindable] BSTR rubyOverhang ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDCHAR), displaybind, bindable] void layoutGridChar (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDCHAR), displaybind, bindable] VARIANT layoutGridChar ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDLINE), displaybind, bindable] void layoutGridLine (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDLINE), displaybind, bindable] VARIANT layoutGridLine ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDMODE), displaybind, bindable] void layoutGridMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDMODE), displaybind, bindable] BSTR layoutGridMode ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDTYPE), displaybind, bindable] void layoutGridType (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDTYPE), displaybind, bindable] BSTR layoutGridType ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRID), displaybind, bindable, nonbrowsable] void layoutGrid (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRID), displaybind, bindable, nonbrowsable] BSTR layoutGrid ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTAUTOSPACE), displaybind, bindable] void textAutospace (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTAUTOSPACE), displaybind, bindable] BSTR textAutospace ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDBREAK), displaybind, bindable] void wordBreak (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDBREAK), displaybind, bindable] BSTR wordBreak ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LINEBREAK), displaybind, bindable] void lineBreak (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LINEBREAK), displaybind, bindable] BSTR lineBreak ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFY), displaybind, bindable] void textJustify (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFY), displaybind, bindable] BSTR textJustify ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFYTRIM), displaybind, bindable] void textJustifyTrim (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFYTRIM), displaybind, bindable] BSTR textJustifyTrim ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDA), displaybind, bindable] void textKashida (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDA), displaybind, bindable] VARIANT textKashida ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWX), displaybind, bindable] void overflowX (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWX), displaybind, bindable] BSTR overflowX ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWY), displaybind, bindable] void overflowY (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWY), displaybind, bindable] BSTR overflowY ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ACCELERATOR), displaybind, bindable] void accelerator (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ACCELERATOR), displaybind, bindable] BSTR accelerator ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTFLOW), displaybind, bindable] void layoutFlow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTFLOW), displaybind, bindable] BSTR layoutFlow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ZOOM), displaybind, bindable] void zoom (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ZOOM), displaybind, bindable] VARIANT zoom ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDWRAP), displaybind, bindable] void wordWrap (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDWRAP), displaybind, bindable] BSTR wordWrap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTUNDERLINEPOSITION), displaybind, bindable] void textUnderlinePosition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTUNDERLINEPOSITION), displaybind, bindable] BSTR textUnderlinePosition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARBASECOLOR), displaybind, bindable] void scrollbarBaseColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARBASECOLOR), displaybind, bindable] VARIANT scrollbarBaseColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARFACECOLOR), displaybind, bindable] void scrollbarFaceColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARFACECOLOR), displaybind, bindable] VARIANT scrollbarFaceColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] void scrollbar3dLightColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] VARIANT scrollbar3dLightColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARSHADOWCOLOR), displaybind, bindable] void scrollbarShadowColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARSHADOWCOLOR), displaybind, bindable] VARIANT scrollbarShadowColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] void scrollbarHighlightColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] VARIANT scrollbarHighlightColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] void scrollbarDarkShadowColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] VARIANT scrollbarDarkShadowColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARARROWCOLOR), displaybind, bindable] void scrollbarArrowColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARARROWCOLOR), displaybind, bindable] VARIANT scrollbarArrowColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARTRACKCOLOR), displaybind, bindable] void scrollbarTrackColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARTRACKCOLOR), displaybind, bindable] VARIANT scrollbarTrackColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WRITINGMODE), displaybind, bindable] void writingMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WRITINGMODE), displaybind, bindable] BSTR writingMode ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGNLAST), displaybind, bindable] void textAlignLast (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGNLAST), displaybind, bindable] BSTR textAlignLast ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDASPACE), displaybind, bindable] void textKashidaSpace (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDASPACE), displaybind, bindable] VARIANT textKashidaSpace ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTOVERFLOW), displaybind, bindable] void textOverflow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTOVERFLOW), displaybind, bindable] BSTR textOverflow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MINHEIGHT), displaybind, bindable] void minHeight (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MINHEIGHT), displaybind, bindable] VARIANT minHeight ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSINTERPOLATIONMODE), displaybind, bindable] void msInterpolationMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSINTERPOLATIONMODE), displaybind, bindable] BSTR msInterpolationMode ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MAXHEIGHT), displaybind, bindable] void maxHeight (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MAXHEIGHT), displaybind, bindable] VARIANT maxHeight ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MINWIDTH), displaybind, bindable] void minWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MINWIDTH), displaybind, bindable] VARIANT minWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MAXWIDTH), displaybind, bindable] void maxWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MAXWIDTH), displaybind, bindable] VARIANT maxWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CONTENT), displaybind, bindable] void content (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CONTENT), displaybind, bindable] BSTR content ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CAPTIONSIDE), displaybind, bindable] void captionSide (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CAPTIONSIDE), displaybind, bindable] BSTR captionSide ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERINCREMENT), displaybind, bindable] void counterIncrement (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERINCREMENT), displaybind, bindable] BSTR counterIncrement ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERRESET), displaybind, bindable] void counterReset (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERRESET), displaybind, bindable] BSTR counterReset ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINE), displaybind, bindable] void outline (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINE), displaybind, bindable] BSTR outline ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINEWIDTH), displaybind, bindable] void outlineWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINEWIDTH), displaybind, bindable] VARIANT outlineWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINESTYLE), displaybind, bindable] void outlineStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINESTYLE), displaybind, bindable] BSTR outlineStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINECOLOR), displaybind, bindable] void outlineColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINECOLOR), displaybind, bindable] VARIANT outlineColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOXSIZING), displaybind, bindable] void boxSizing (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOXSIZING), displaybind, bindable] BSTR boxSizing ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSPACING), displaybind, bindable] void borderSpacing (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSPACING), displaybind, bindable] BSTR borderSpacing ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ORPHANS), displaybind, bindable] void orphans (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ORPHANS), displaybind, bindable] VARIANT orphans ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WIDOWS), displaybind, bindable] void widows (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WIDOWS), displaybind, bindable] VARIANT widows ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKINSIDE), displaybind, bindable] void pageBreakInside (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKINSIDE), displaybind, bindable] BSTR pageBreakInside ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_EMPTYCELLS), displaybind, bindable] void emptyCells (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_EMPTYCELLS), displaybind, bindable] BSTR emptyCells ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSBLOCKPROGRESSION), displaybind, bindable] void msBlockProgression (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSBLOCKPROGRESSION), displaybind, bindable] BSTR msBlockProgression ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_QUOTES), displaybind, bindable] void quotes (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_QUOTES), displaybind, bindable] BSTR quotes ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ALIGNMENTBASELINE), displaybind, bindable] void alignmentBaseline (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ALIGNMENTBASELINE), displaybind, bindable] BSTR alignmentBaseline ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BASELINESHIFT), displaybind, bindable] void baselineShift (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BASELINESHIFT), displaybind, bindable] VARIANT baselineShift ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_DOMINANTBASELINE), displaybind, bindable] void dominantBaseline (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_DOMINANTBASELINE), displaybind, bindable] BSTR dominantBaseline ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZEADJUST), displaybind, bindable] void fontSizeAdjust (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZEADJUST), displaybind, bindable] VARIANT fontSizeAdjust ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTRETCH), displaybind, bindable] void fontStretch (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTRETCH), displaybind, bindable] BSTR fontStretch ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OPACITY), displaybind, bindable] void opacity (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OPACITY), displaybind, bindable] VARIANT opacity ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPPATH), displaybind, bindable] void clipPath (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPPATH), displaybind, bindable] BSTR clipPath ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRULE), displaybind, bindable] void clipRule (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRULE), displaybind, bindable] BSTR clipRule ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILL), displaybind, bindable] void fill (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILL), displaybind, bindable] BSTR fill ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILLOPACITY), displaybind, bindable] void fillOpacity (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILLOPACITY), displaybind, bindable] VARIANT fillOpacity ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILLRULE), displaybind, bindable] void fillRule (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILLRULE), displaybind, bindable] BSTR fillRule ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_KERNING), displaybind, bindable] void kerning (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_KERNING), displaybind, bindable] VARIANT kerning ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKER), displaybind, bindable] void marker (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKER), displaybind, bindable] BSTR marker ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKEREND), displaybind, bindable] void markerEnd (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKEREND), displaybind, bindable] BSTR markerEnd ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKERMID), displaybind, bindable] void markerMid (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKERMID), displaybind, bindable] BSTR markerMid ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKERSTART), displaybind, bindable] void markerStart (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKERSTART), displaybind, bindable] BSTR markerStart ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MASK), displaybind, bindable] void mask (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MASK), displaybind, bindable] BSTR mask ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_POINTEREVENTS), displaybind, bindable] void pointerEvents (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_POINTEREVENTS), displaybind, bindable] BSTR pointerEvents ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STOPCOLOR), displaybind, bindable] void stopColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STOPCOLOR), displaybind, bindable] VARIANT stopColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STOPOPACITY), displaybind, bindable] void stopOpacity (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STOPOPACITY), displaybind, bindable] VARIANT stopOpacity ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKE), displaybind, bindable] void stroke (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKE), displaybind, bindable] BSTR stroke ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHARRAY), displaybind, bindable] void strokeDasharray (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHARRAY), displaybind, bindable] BSTR strokeDasharray ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHOFFSET), displaybind, bindable] void strokeDashoffset (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHOFFSET), displaybind, bindable] VARIANT strokeDashoffset ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINECAP), displaybind, bindable] void strokeLinecap (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINECAP), displaybind, bindable] BSTR strokeLinecap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINEJOIN), displaybind, bindable] void strokeLinejoin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINEJOIN), displaybind, bindable] BSTR strokeLinejoin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEMITERLIMIT), displaybind, bindable] void strokeMiterlimit (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEMITERLIMIT), displaybind, bindable] VARIANT strokeMiterlimit ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEOPACITY), displaybind, bindable] void strokeOpacity (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEOPACITY), displaybind, bindable] VARIANT strokeOpacity ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEWIDTH), displaybind, bindable] void strokeWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEWIDTH), displaybind, bindable] VARIANT strokeWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTANCHOR), displaybind, bindable] void textAnchor (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTANCHOR), displaybind, bindable] BSTR textAnchor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONHORIZONTAL), displaybind, bindable] void glyphOrientationHorizontal (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONHORIZONTAL), displaybind, bindable] VARIANT glyphOrientationHorizontal ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONVERTICAL), displaybind, bindable] void glyphOrientationVertical (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONVERTICAL), displaybind, bindable] VARIANT glyphOrientationVertical ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRADIUS), displaybind, bindable] void borderRadius (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRADIUS), displaybind, bindable] BSTR borderRadius ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPLEFTRADIUS), displaybind, bindable] void borderTopLeftRadius (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPLEFTRADIUS), displaybind, bindable] BSTR borderTopLeftRadius ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPRIGHTRADIUS), displaybind, bindable] void borderTopRightRadius (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPRIGHTRADIUS), displaybind, bindable] BSTR borderTopRightRadius ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMRIGHTRADIUS), displaybind, bindable] void borderBottomRightRadius (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMRIGHTRADIUS), displaybind, bindable] BSTR borderBottomRightRadius ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMLEFTRADIUS), displaybind, bindable] void borderBottomLeftRadius (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMLEFTRADIUS), displaybind, bindable] BSTR borderBottomLeftRadius ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPTOP), displaybind, bindable, hidden] void clipTop (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPTOP), displaybind, bindable, hidden] VARIANT clipTop ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRIGHT), displaybind, bindable, hidden] void clipRight (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRIGHT), displaybind, bindable, hidden] VARIANT clipRight ();
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPBOTTOM), displaybind, bindable, hidden] VARIANT clipBottom ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPLEFT), displaybind, bindable, hidden] void clipLeft (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPLEFT), displaybind, bindable, hidden] VARIANT clipLeft ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CSSFLOAT), displaybind, bindable] void cssFloat (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CSSFLOAT), displaybind, bindable] BSTR cssFloat ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCLIP), displaybind, bindable] void backgroundClip (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCLIP), displaybind, bindable] BSTR backgroundClip ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDORIGIN), displaybind, bindable] void backgroundOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDORIGIN), displaybind, bindable] BSTR backgroundOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDSIZE), displaybind, bindable] void backgroundSize (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDSIZE), displaybind, bindable] BSTR backgroundSize ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOXSHADOW), displaybind, bindable] void boxShadow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOXSHADOW), displaybind, bindable] BSTR boxShadow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORM), displaybind, bindable] void msTransform (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORM), displaybind, bindable] BSTR msTransform ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORMORIGIN), displaybind, bindable] void msTransformOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORMORIGIN), displaybind, bindable] BSTR msTransformOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLCHAINING), displaybind, bindable] void msScrollChaining (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLCHAINING), displaybind, bindable] BSTR msScrollChaining ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable] void msContentZooming (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable] BSTR msContentZooming ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable] void msContentZoomSnapType (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable] BSTR msContentZoomSnapType ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable] void msScrollRails (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable] BSTR msScrollRails ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable] void msContentZoomChaining (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable] BSTR msContentZoomChaining ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable] void msScrollSnapType (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable] BSTR msScrollSnapType ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable] void msContentZoomLimit (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable] BSTR msContentZoomLimit ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable] void msContentZoomSnap (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable] BSTR msContentZoomSnap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable] void msContentZoomSnapPoints (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable] BSTR msContentZoomSnapPoints ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable] void msContentZoomLimitMin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable] VARIANT msContentZoomLimitMin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable] void msContentZoomLimitMax (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable] VARIANT msContentZoomLimitMax ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable] void msScrollSnapX (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable] BSTR msScrollSnapX ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable] void msScrollSnapY (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable] BSTR msScrollSnapY ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable] void msScrollSnapPointsX (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable] BSTR msScrollSnapPointsX ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable] void msScrollSnapPointsY (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable] BSTR msScrollSnapPointsY ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable] void msGridColumn (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable] VARIANT msGridColumn ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable] void msGridColumnAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable] BSTR msGridColumnAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable] void msGridColumns (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable] BSTR msGridColumns ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable] void msGridColumnSpan (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable] VARIANT msGridColumnSpan ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable] void msGridRow (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable] VARIANT msGridRow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable] void msGridRowAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable] BSTR msGridRowAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable] void msGridRows (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable] BSTR msGridRows ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable] void msGridRowSpan (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable] VARIANT msGridRowSpan ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable] void msWrapThrough (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable] BSTR msWrapThrough ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable] void msWrapMargin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable] VARIANT msWrapMargin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable] void msWrapFlow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable] BSTR msWrapFlow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable] void msAnimationName (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable] BSTR msAnimationName ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable] void msAnimationDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable] BSTR msAnimationDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable] void msAnimationTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable] BSTR msAnimationTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable] void msAnimationDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable] BSTR msAnimationDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable] void msAnimationDirection (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable] BSTR msAnimationDirection ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable] void msAnimationPlayState (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable] BSTR msAnimationPlayState ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable] void msAnimationIterationCount (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable] BSTR msAnimationIterationCount ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable] void msAnimation (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable] BSTR msAnimation ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable] void msAnimationFillMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable] BSTR msAnimationFillMode ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable] void colorInterpolationFilters (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable] BSTR colorInterpolationFilters ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable] void columnCount (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable] VARIANT columnCount ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable] void columnWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable] VARIANT columnWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable] void columnGap (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable] VARIANT columnGap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable] void columnFill (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable] BSTR columnFill ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable] void columnSpan (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable] BSTR columnSpan ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNS), displaybind, bindable, nonbrowsable] void columns (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNS), displaybind, bindable, nonbrowsable] BSTR columns ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable] void columnRule (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable] BSTR columnRule ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable] void columnRuleColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable] VARIANT columnRuleColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable] void columnRuleStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable] BSTR columnRuleStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable] void columnRuleWidth (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable] VARIANT columnRuleWidth ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable] void breakBefore (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable] BSTR breakBefore ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable] void breakAfter (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable] BSTR breakAfter ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable] void breakInside (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable] BSTR breakInside ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable] void floodColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable] VARIANT floodColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable] void floodOpacity (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable] VARIANT floodOpacity ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable] void lightingColor (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable] VARIANT lightingColor ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable] void msScrollLimitXMin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable] VARIANT msScrollLimitXMin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable] void msScrollLimitYMin (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable] VARIANT msScrollLimitYMin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable] void msScrollLimitXMax (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable] VARIANT msScrollLimitXMax ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable] void msScrollLimitYMax (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable] VARIANT msScrollLimitYMax ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable] void msScrollLimit (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable] BSTR msScrollLimit ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable] void textShadow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable] BSTR textShadow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable] void msFlowFrom (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable] BSTR msFlowFrom ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable] void msFlowInto (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable] BSTR msFlowInto ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable] void msHyphens (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable] BSTR msHyphens ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable] void msHyphenateLimitZone (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable] VARIANT msHyphenateLimitZone ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable] void msHyphenateLimitChars (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable] BSTR msHyphenateLimitChars ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable] void msHyphenateLimitLines (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable] VARIANT msHyphenateLimitLines ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable] void msHighContrastAdjust (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable] BSTR msHighContrastAdjust ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable] void enableBackground (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable] BSTR enableBackground ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable] void msFontFeatureSettings (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable] BSTR msFontFeatureSettings ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable] void msUserSelect (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable] BSTR msUserSelect ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable] void msOverflowStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable] BSTR msOverflowStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable] void msTransformStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable] BSTR msTransformStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable] void msBackfaceVisibility (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable] BSTR msBackfaceVisibility ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable] void msPerspective (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable] VARIANT msPerspective ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable] void msPerspectiveOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable] BSTR msPerspectiveOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable] void msTransitionProperty (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable] BSTR msTransitionProperty ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable] void msTransitionDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable] BSTR msTransitionDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable] void msTransitionTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable] BSTR msTransitionTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable] void msTransitionDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable] BSTR msTransitionDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable] void msTransition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable] BSTR msTransition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable] void msTouchAction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable] BSTR msTouchAction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable] void msScrollTranslation (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable] BSTR msScrollTranslation ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable] void msFlex (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable] BSTR msFlex ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable] void msFlexPositive (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable] VARIANT msFlexPositive ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable] void msFlexNegative (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable] VARIANT msFlexNegative ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable] void msFlexPreferredSize (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable] VARIANT msFlexPreferredSize ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable] void msFlexFlow (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable] BSTR msFlexFlow ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable] void msFlexDirection (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable] BSTR msFlexDirection ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable] void msFlexWrap (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable] BSTR msFlexWrap ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable] void msFlexAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable] BSTR msFlexAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable] void msFlexItemAlign (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable] BSTR msFlexItemAlign ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable] void msFlexPack (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable] BSTR msFlexPack ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable] void msFlexLinePack (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable] BSTR msFlexLinePack ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable] void msFlexOrder (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable] VARIANT msFlexOrder ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable] void msTouchSelect (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable] BSTR msTouchSelect ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable] void transform (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable] BSTR transform ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable] void transformOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable] BSTR transformOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable] void transformStyle (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable] BSTR transformStyle ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable] void backfaceVisibility (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable] BSTR backfaceVisibility ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable] void perspective (VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable] VARIANT perspective ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable] void perspectiveOrigin (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable] BSTR perspectiveOrigin ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable] void transitionProperty (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable] BSTR transitionProperty ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable] void transitionDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable] BSTR transitionDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable] void transitionTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable] BSTR transitionTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable] void transitionDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable] BSTR transitionDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable] void transition (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable] BSTR transition ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable] void fontFeatureSettings (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable] BSTR fontFeatureSettings ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable] void animationName (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable] BSTR animationName ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable] void animationDuration (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable] BSTR animationDuration ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable] void animationTimingFunction (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable] BSTR animationTimingFunction ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable] void animationDelay (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable] BSTR animationDelay ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable] void animationDirection (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable] BSTR animationDirection ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable] void animationPlayState (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable] BSTR animationPlayState ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable] void animationIterationCount (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable] BSTR animationIterationCount ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), displaybind, bindable] void animation (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), displaybind, bindable] BSTR animation ();
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), displaybind, bindable] void animationFillMode (BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), displaybind, bindable] BSTR animationFillMode ();
  };
  [noncreatable, uuid (305106c8-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLW3CComputedStyle {
    [default] dispinterface DispHTMLW3CComputedStyle;
    interface IHTMLCSSStyleDeclaration;
    interface IHTMLCSSStyleDeclaration2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CW3CComputedStyle;")
  interface ISVGTransform;
  interface ISVGMatrix;
  [odl, oleautomation, dual, uuid (305104f8-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGTransformList : IDispatch {
    [propput, id (DISPID_ISVGTRANSFORMLIST_NUMBEROFITEMS)] HRESULT numberOfItems ([in] long v);
    [propget, id (DISPID_ISVGTRANSFORMLIST_NUMBEROFITEMS)] HRESULT numberOfItems ([retval, out] long *p);
    [id (DISPID_ISVGTRANSFORMLIST_CLEAR)] HRESULT clear ();
    [id (DISPID_ISVGTRANSFORMLIST_INITIALIZE)] HRESULT initialize ([in] ISVGTransform *newItem,[retval, out] ISVGTransform **ppResult);
    [id (DISPID_ISVGTRANSFORMLIST_GETITEM)] HRESULT getItem ([in] long index,[retval, out] ISVGTransform **ppResult);
    [id (DISPID_ISVGTRANSFORMLIST_INSERTITEMBEFORE)] HRESULT insertItemBefore ([in] ISVGTransform *newItem,[in] long index,[retval, out] ISVGTransform **ppResult);
    [id (DISPID_ISVGTRANSFORMLIST_REPLACEITEM)] HRESULT replaceItem ([in] ISVGTransform *newItem,[in] long index,[retval, out] ISVGTransform **ppResult);
    [id (DISPID_ISVGTRANSFORMLIST_REMOVEITEM)] HRESULT removeItem ([in] long index,[retval, out] ISVGTransform **ppResult);
    [id (DISPID_ISVGTRANSFORMLIST_APPENDITEM)] HRESULT appendItem ([in] ISVGTransform *newItem,[retval, out] ISVGTransform **ppResult);
    [id (DISPID_ISVGTRANSFORMLIST_CREATESVGTRANSFORMFROMMATRIX)] HRESULT createSVGTransformFromMatrix ([in] ISVGMatrix *newItem,[retval, out] ISVGTransform **ppResult);
    [id (DISPID_ISVGTRANSFORMLIST_CONSOLIDATE)] HRESULT consolidate ([retval, out] ISVGTransform **ppResult);
  };
  [noncreatable, uuid (305105b0-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGTransformList {
    [default] interface ISVGTransformList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGTransformList;")
  interface ISVGPointList;
  [odl, oleautomation, dual, uuid (30510517-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedPoints : IDispatch {
    [propputref, id (DISPID_ISVGANIMATEDPOINTS_POINTS)] HRESULT points ([in] ISVGPointList *v);
    [propget, id (DISPID_ISVGANIMATEDPOINTS_POINTS)] HRESULT points ([retval, out] ISVGPointList **p);
    [propputref, id (DISPID_ISVGANIMATEDPOINTS_ANIMATEDPOINTS)] HRESULT animatedPoints ([in] ISVGPointList *v);
    [propget, id (DISPID_ISVGANIMATEDPOINTS_ANIMATEDPOINTS)] HRESULT animatedPoints ([retval, out] ISVGPointList **p);
  };
  [odl, oleautomation, dual, uuid (30510514-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGCircleElement : IDispatch {
    [propputref, id (DISPID_ISVGCIRCLEELEMENT_CX)] HRESULT cx ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGCIRCLEELEMENT_CX)] HRESULT cx ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGCIRCLEELEMENT_CY)] HRESULT cy ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGCIRCLEELEMENT_CY)] HRESULT cy ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGCIRCLEELEMENT_R)] HRESULT r ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGCIRCLEELEMENT_R)] HRESULT r ([retval, out] ISVGAnimatedLength **p);
  };
  [odl, oleautomation, dual, uuid (30510515-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGEllipseElement : IDispatch {
    [propputref, id (DISPID_ISVGELLIPSEELEMENT_CX)] HRESULT cx ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGELLIPSEELEMENT_CX)] HRESULT cx ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGELLIPSEELEMENT_CY)] HRESULT cy ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGELLIPSEELEMENT_CY)] HRESULT cy ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGELLIPSEELEMENT_RX)] HRESULT rx ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGELLIPSEELEMENT_RX)] HRESULT rx ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGELLIPSEELEMENT_RY)] HRESULT ry ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGELLIPSEELEMENT_RY)] HRESULT ry ([retval, out] ISVGAnimatedLength **p);
  };
  [odl, oleautomation, dual, uuid (30510516-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGLineElement : IDispatch {
    [propputref, id (DISPID_ISVGLINEELEMENT_X1)] HRESULT x1 ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEELEMENT_X1)] HRESULT x1 ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGLINEELEMENT_Y1)] HRESULT y1 ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEELEMENT_Y1)] HRESULT y1 ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGLINEELEMENT_X2)] HRESULT x2 ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEELEMENT_X2)] HRESULT x2 ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGLINEELEMENT_Y2)] HRESULT y2 ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEELEMENT_Y2)] HRESULT y2 ([retval, out] ISVGAnimatedLength **p);
  };
  [odl, oleautomation, dual, uuid (30510513-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGRectElement : IDispatch {
    [propputref, id (DISPID_ISVGRECTELEMENT_X)] HRESULT x ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_X)] HRESULT x ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRECTELEMENT_Y)] HRESULT y ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_Y)] HRESULT y ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRECTELEMENT_WIDTH)] HRESULT width ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_WIDTH)] HRESULT width ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRECTELEMENT_HEIGHT)] HRESULT height ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_HEIGHT)] HRESULT height ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRECTELEMENT_RX)] HRESULT rx ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_RX)] HRESULT rx ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRECTELEMENT_RY)] HRESULT ry ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_RY)] HRESULT ry ([retval, out] ISVGAnimatedLength **p);
  };
  [odl, oleautomation, dual, uuid (30510519-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPolygonElement : IDispatch {
  };
  [odl, oleautomation, dual, uuid (30510518-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPolylineElement : IDispatch {
  };
  [hidden, uuid (3059000a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGCircleElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGCIRCLEELEMENT_CX)] void cx (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGCIRCLEELEMENT_CX)] ISVGAnimatedLength *cx ();
    [propputref, id (DISPID_ISVGCIRCLEELEMENT_CY)] void cy (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGCIRCLEELEMENT_CY)] ISVGAnimatedLength *cy ();
    [propputref, id (DISPID_ISVGCIRCLEELEMENT_R)] void r (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGCIRCLEELEMENT_R)] ISVGAnimatedLength *r ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] ISVGElement *nearestViewportElement ();
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] ISVGElement *farthestViewportElement ();
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] ISVGRect *getBBox ();
    [id (DISPID_ISVGLOCATABLE_GETCTM)] ISVGMatrix *getCTM ();
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] ISVGMatrix *getScreenCTM ();
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] ISVGMatrix *getTransformToElement ([in] ISVGElement *pElement);
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
  };
  [noncreatable, uuid (30510578-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGCircleElement {
    [default] dispinterface DispSVGCircleElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGCircleElement;
    interface ISVGTests;
    interface ISVGTransformable;
    interface ISVGLocatable;
    interface ISVGElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGCircleElement;")
  [hidden, uuid (3059000b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGEllipseElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGELLIPSEELEMENT_CX)] void cx (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGELLIPSEELEMENT_CX)] ISVGAnimatedLength *cx ();
    [propputref, id (DISPID_ISVGELLIPSEELEMENT_CY)] void cy (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGELLIPSEELEMENT_CY)] ISVGAnimatedLength *cy ();
    [propputref, id (DISPID_ISVGELLIPSEELEMENT_RX)] void rx (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGELLIPSEELEMENT_RX)] ISVGAnimatedLength *rx ();
    [propputref, id (DISPID_ISVGELLIPSEELEMENT_RY)] void ry (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGELLIPSEELEMENT_RY)] ISVGAnimatedLength *ry ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] ISVGElement *nearestViewportElement ();
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] ISVGElement *farthestViewportElement ();
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] ISVGRect *getBBox ();
    [id (DISPID_ISVGLOCATABLE_GETCTM)] ISVGMatrix *getCTM ();
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] ISVGMatrix *getScreenCTM ();
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] ISVGMatrix *getTransformToElement ([in] ISVGElement *pElement);
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
  };
  [noncreatable, uuid (30510579-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGEllipseElement {
    [default] dispinterface DispSVGEllipseElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGEllipseElement;
    interface ISVGTransformable;
    interface ISVGLocatable;
    interface ISVGElement;
    interface ISVGTests;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGEllipseElement;")
  [hidden, uuid (3059000c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGLineElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGLINEELEMENT_X1)] void x1 (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEELEMENT_X1)] ISVGAnimatedLength *x1 ();
    [propputref, id (DISPID_ISVGLINEELEMENT_Y1)] void y1 (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEELEMENT_Y1)] ISVGAnimatedLength *y1 ();
    [propputref, id (DISPID_ISVGLINEELEMENT_X2)] void x2 (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEELEMENT_X2)] ISVGAnimatedLength *x2 ();
    [propputref, id (DISPID_ISVGLINEELEMENT_Y2)] void y2 (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEELEMENT_Y2)] ISVGAnimatedLength *y2 ();
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] void xmllang (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] BSTR xmllang ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] void xmlspace (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] BSTR xmlspace ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] ISVGElement *nearestViewportElement ();
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] ISVGElement *farthestViewportElement ();
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] ISVGRect *getBBox ();
    [id (DISPID_ISVGLOCATABLE_GETCTM)] ISVGMatrix *getCTM ();
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] ISVGMatrix *getScreenCTM ();
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] ISVGMatrix *getTransformToElement ([in] ISVGElement *pElement);
  };
  [noncreatable, uuid (3051057a-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGLineElement {
    [default] dispinterface DispSVGLineElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGLineElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGTransformable;
    interface ISVGLocatable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGLineElement;")
  [hidden, uuid (30590009-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGRectElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGRECTELEMENT_X)] void x (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_X)] ISVGAnimatedLength *x ();
    [propputref, id (DISPID_ISVGRECTELEMENT_Y)] void y (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_Y)] ISVGAnimatedLength *y ();
    [propputref, id (DISPID_ISVGRECTELEMENT_WIDTH)] void width (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_WIDTH)] ISVGAnimatedLength *width ();
    [propputref, id (DISPID_ISVGRECTELEMENT_HEIGHT)] void height (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_HEIGHT)] ISVGAnimatedLength *height ();
    [propputref, id (DISPID_ISVGRECTELEMENT_RX)] void rx (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_RX)] ISVGAnimatedLength *rx ();
    [propputref, id (DISPID_ISVGRECTELEMENT_RY)] void ry (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_RY)] ISVGAnimatedLength *ry ();
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] void xmllang (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] BSTR xmllang ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] void xmlspace (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] BSTR xmlspace ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] ISVGElement *nearestViewportElement ();
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] ISVGElement *farthestViewportElement ();
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] ISVGRect *getBBox ();
    [id (DISPID_ISVGLOCATABLE_GETCTM)] ISVGMatrix *getCTM ();
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] ISVGMatrix *getScreenCTM ();
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] ISVGMatrix *getTransformToElement ([in] ISVGElement *pElement);
  };
  [noncreatable, uuid (30510577-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGRectElement {
    [default] dispinterface DispSVGRectElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGRectElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGTransformable;
    interface ISVGLocatable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGRectElement;")
  [hidden, uuid (3059000d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPolygonElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGANIMATEDPOINTS_POINTS)] void points (ISVGPointList *v);
    [propget, id (DISPID_ISVGANIMATEDPOINTS_POINTS)] ISVGPointList *points ();
    [propputref, id (DISPID_ISVGANIMATEDPOINTS_ANIMATEDPOINTS)] void animatedPoints (ISVGPointList *v);
    [propget, id (DISPID_ISVGANIMATEDPOINTS_ANIMATEDPOINTS)] ISVGPointList *animatedPoints ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] ISVGElement *nearestViewportElement ();
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] ISVGElement *farthestViewportElement ();
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] ISVGRect *getBBox ();
    [id (DISPID_ISVGLOCATABLE_GETCTM)] ISVGMatrix *getCTM ();
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] ISVGMatrix *getScreenCTM ();
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] ISVGMatrix *getTransformToElement ([in] ISVGElement *pElement);
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
  };
  [noncreatable, uuid (3051057b-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPolygonElement {
    [default] dispinterface DispSVGPolygonElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGPolygonElement;
    interface ISVGAnimatedPoints;
    interface ISVGTransformable;
    interface ISVGLocatable;
    interface ISVGElement;
    interface ISVGTests;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPolygonElement;")
  [hidden, uuid (3059000e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPolylineElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGANIMATEDPOINTS_POINTS)] void points (ISVGPointList *v);
    [propget, id (DISPID_ISVGANIMATEDPOINTS_POINTS)] ISVGPointList *points ();
    [propputref, id (DISPID_ISVGANIMATEDPOINTS_ANIMATEDPOINTS)] void animatedPoints (ISVGPointList *v);
    [propget, id (DISPID_ISVGANIMATEDPOINTS_ANIMATEDPOINTS)] ISVGPointList *animatedPoints ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] ISVGElement *nearestViewportElement ();
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] ISVGElement *farthestViewportElement ();
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] ISVGRect *getBBox ();
    [id (DISPID_ISVGLOCATABLE_GETCTM)] ISVGMatrix *getCTM ();
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] ISVGMatrix *getScreenCTM ();
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] ISVGMatrix *getTransformToElement ([in] ISVGElement *pElement);
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
  };
  [noncreatable, uuid (3051057c-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPolylineElement {
    [default] dispinterface DispSVGPolylineElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGPolylineElement;
    interface ISVGAnimatedPoints;
    interface ISVGTransformable;
    interface ISVGLocatable;
    interface ISVGElement;
    interface ISVGTests;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPolylineElement;")
  [odl, oleautomation, dual, uuid (305104e8-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGGElement : IDispatch {
  };
  [hidden, uuid (30590002-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGGElement {
    properties:
    methods:
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] void xmllang (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] BSTR xmllang ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] void xmlspace (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] BSTR xmlspace ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] ISVGElement *nearestViewportElement ();
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] ISVGElement *farthestViewportElement ();
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] ISVGRect *getBBox ();
    [id (DISPID_ISVGLOCATABLE_GETCTM)] ISVGMatrix *getCTM ();
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] ISVGMatrix *getScreenCTM ();
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] ISVGMatrix *getTransformToElement ([in] ISVGElement *pElement);
  };
  [noncreatable, uuid (3051056f-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGGElement {
    [default] dispinterface DispSVGGElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGGElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGTransformable;
    interface ISVGLocatable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGGElement;")
  [odl, oleautomation, dual, uuid (305104ec-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGSymbolElement : IDispatch {
  };
  [hidden, uuid (30590004-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGSymbolElement {
    properties:
    methods:
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] void xmllang (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] BSTR xmllang ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] void xmlspace (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] BSTR xmlspace ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGFITTOVIEWBOX_VIEWBOX)] ISVGAnimatedRect *viewBox ();
    [propputref, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] void preserveAspectRatio (ISVGAnimatedPreserveAspectRatio *v);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] ISVGAnimatedPreserveAspectRatio *preserveAspectRatio ();
  };
  [noncreatable, uuid (30510571-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGSymbolElement {
    [default] dispinterface DispSVGSymbolElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGSymbolElement;
    interface ISVGElement;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGFitToViewBox;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGSymbolElement;")
  [odl, oleautomation, dual, uuid (305104e9-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGDefsElement : IDispatch {
  };
  [hidden, uuid (30590003-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGDefsElement {
    properties:
    methods:
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] void xmllang (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] BSTR xmllang ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] void xmlspace (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] BSTR xmlspace ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] ISVGElement *nearestViewportElement ();
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] ISVGElement *farthestViewportElement ();
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] ISVGRect *getBBox ();
    [id (DISPID_ISVGLOCATABLE_GETCTM)] ISVGMatrix *getCTM ();
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] ISVGMatrix *getScreenCTM ();
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] ISVGMatrix *getTransformToElement ([in] ISVGElement *pElement);
  };
  [noncreatable, uuid (30510570-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGDefsElement {
    [default] dispinterface DispSVGDefsElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGDefsElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGTransformable;
    interface ISVGLocatable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGDefsElement;")
  [odl, oleautomation, dual, uuid (30510511-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedPathData : IDispatch {
    [propputref, id (DISPID_ISVGANIMATEDPATHDATA_PATHSEGLIST)] HRESULT pathSegList ([in] ISVGPathSegList *v);
    [propget, id (DISPID_ISVGANIMATEDPATHDATA_PATHSEGLIST)] HRESULT pathSegList ([retval, out] ISVGPathSegList **p);
    [propputref, id (DISPID_ISVGANIMATEDPATHDATA_NORMALIZEDPATHSEGLIST)] HRESULT normalizedPathSegList ([in] ISVGPathSegList *v);
    [propget, id (DISPID_ISVGANIMATEDPATHDATA_NORMALIZEDPATHSEGLIST)] HRESULT normalizedPathSegList ([retval, out] ISVGPathSegList **p);
    [propputref, id (DISPID_ISVGANIMATEDPATHDATA_ANIMATEDPATHSEGLIST)] HRESULT animatedPathSegList ([in] ISVGPathSegList *v);
    [propget, id (DISPID_ISVGANIMATEDPATHDATA_ANIMATEDPATHSEGLIST)] HRESULT animatedPathSegList ([retval, out] ISVGPathSegList **p);
    [propputref, id (DISPID_ISVGANIMATEDPATHDATA_ANIMATEDNORMALIZEDPATHSEGLIST)] HRESULT animatedNormalizedPathSegList ([in] ISVGPathSegList *v);
    [propget, id (DISPID_ISVGANIMATEDPATHDATA_ANIMATEDNORMALIZEDPATHSEGLIST)] HRESULT animatedNormalizedPathSegList ([retval, out] ISVGPathSegList **p);
  };
  [odl, oleautomation, dual, uuid (30510512-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathElement : IDispatch {
    [propputref, id (DISPID_ISVGPATHELEMENT_PATHLENGTH)] HRESULT pathLength ([in] ISVGAnimatedNumber *v);
    [propget, id (DISPID_ISVGPATHELEMENT_PATHLENGTH)] HRESULT pathLength ([retval, out] ISVGAnimatedNumber **p);
    [id (DISPID_ISVGPATHELEMENT_GETTOTALLENGTH)] HRESULT getTotalLength ([retval, out] float *pfltResult);
    [id (DISPID_ISVGPATHELEMENT_GETPOINTATLENGTH)] HRESULT getPointAtLength ([in] float fltdistance,[retval, out] ISVGPoint **ppPointResult);
    [id (DISPID_ISVGPATHELEMENT_GETPATHSEGATLENGTH)] HRESULT getPathSegAtLength ([in] float fltdistance,[retval, out] long *plResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCLOSEPATH)] HRESULT createSVGPathSegClosePath ([retval, out] ISVGPathSegClosePath **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGMOVETOABS)] HRESULT createSVGPathSegMovetoAbs ([in] float x,[in] float y,[retval, out] ISVGPathSegMovetoAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGMOVETOREL)] HRESULT createSVGPathSegMovetoRel ([in] float x,[in] float y,[retval, out] ISVGPathSegMovetoRel **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOABS)] HRESULT createSVGPathSegLinetoAbs ([in] float x,[in] float y,[retval, out] ISVGPathSegLinetoAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOREL)] HRESULT createSVGPathSegLinetoRel ([in] float x,[in] float y,[retval, out] ISVGPathSegLinetoRel **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOCUBICABS)] HRESULT createSVGPathSegCurvetoCubicAbs ([in] float x,[in] float y,[in] float x1,[in] float y1,[in] float x2,[in] float y2,[retval, out] ISVGPathSegCurvetoCubicAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOCUBICREL)] HRESULT createSVGPathSegCurvetoCubicRel ([in] float x,[in] float y,[in] float x1,[in] float y1,[in] float x2,[in] float y2,[retval, out] ISVGPathSegCurvetoCubicRel **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOQUADRATICABS)] HRESULT createSVGPathSegCurvetoQuadraticAbs ([in] float x,[in] float y,[in] float x1,[in] float y1,[retval, out] ISVGPathSegCurvetoQuadraticAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOQUADRATICREL)] HRESULT createSVGPathSegCurvetoQuadraticRel ([in] float x,[in] float y,[in] float x1,[in] float y1,[retval, out] ISVGPathSegCurvetoQuadraticRel **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGARCABS)] HRESULT createSVGPathSegArcAbs ([in] float x,[in] float y,[in] float r1,[in] float r2,[in] float angle,[in] VARIANT_BOOL largeArcFlag,[in] VARIANT_BOOL sweepFlag,[retval, out] ISVGPathSegArcAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGARCREL)] HRESULT createSVGPathSegArcRel ([in] float x,[in] float y,[in] float r1,[in] float r2,[in] float angle,[in] VARIANT_BOOL largeArcFlag,[in] VARIANT_BOOL sweepFlag,[retval, out] ISVGPathSegArcRel **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOHORIZONTALABS)] HRESULT createSVGPathSegLinetoHorizontalAbs ([in] float x,[retval, out] ISVGPathSegLinetoHorizontalAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOHORIZONTALREL)] HRESULT createSVGPathSegLinetoHorizontalRel ([in] float x,[retval, out] ISVGPathSegLinetoHorizontalRel **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOVERTICALABS)] HRESULT createSVGPathSegLinetoVerticalAbs ([in] float y,[retval, out] ISVGPathSegLinetoVerticalAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOVERTICALREL)] HRESULT createSVGPathSegLinetoVerticalRel ([in] float y,[retval, out] ISVGPathSegLinetoVerticalRel **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOCUBICSMOOTHABS)] HRESULT createSVGPathSegCurvetoCubicSmoothAbs ([in] float x,[in] float y,[in] float x2,[in] float y2,[retval, out] ISVGPathSegCurvetoCubicSmoothAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOCUBICSMOOTHREL)] HRESULT createSVGPathSegCurvetoCubicSmoothRel ([in] float x,[in] float y,[in] float x2,[in] float y2,[retval, out] ISVGPathSegCurvetoCubicSmoothRel **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOQUADRATICSMOOTHABS)] HRESULT createSVGPathSegCurvetoQuadraticSmoothAbs ([in] float x,[in] float y,[retval, out] ISVGPathSegCurvetoQuadraticSmoothAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOQUADRATICSMOOTHREL)] HRESULT createSVGPathSegCurvetoQuadraticSmoothRel ([in] float x,[in] float y,[retval, out] ISVGPathSegCurvetoQuadraticSmoothRel **ppResult);
  };
  [hidden, uuid (30590011-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGANIMATEDPATHDATA_PATHSEGLIST)] void pathSegList (ISVGPathSegList *v);
    [propget, id (DISPID_ISVGANIMATEDPATHDATA_PATHSEGLIST)] ISVGPathSegList *pathSegList ();
    [propputref, id (DISPID_ISVGANIMATEDPATHDATA_NORMALIZEDPATHSEGLIST)] void normalizedPathSegList (ISVGPathSegList *v);
    [propget, id (DISPID_ISVGANIMATEDPATHDATA_NORMALIZEDPATHSEGLIST)] ISVGPathSegList *normalizedPathSegList ();
    [propputref, id (DISPID_ISVGANIMATEDPATHDATA_ANIMATEDPATHSEGLIST)] void animatedPathSegList (ISVGPathSegList *v);
    [propget, id (DISPID_ISVGANIMATEDPATHDATA_ANIMATEDPATHSEGLIST)] ISVGPathSegList *animatedPathSegList ();
    [propputref, id (DISPID_ISVGANIMATEDPATHDATA_ANIMATEDNORMALIZEDPATHSEGLIST)] void animatedNormalizedPathSegList (ISVGPathSegList *v);
    [propget, id (DISPID_ISVGANIMATEDPATHDATA_ANIMATEDNORMALIZEDPATHSEGLIST)] ISVGPathSegList *animatedNormalizedPathSegList ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] ISVGElement *nearestViewportElement ();
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] ISVGElement *farthestViewportElement ();
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] ISVGRect *getBBox ();
    [id (DISPID_ISVGLOCATABLE_GETCTM)] ISVGMatrix *getCTM ();
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] ISVGMatrix *getScreenCTM ();
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] ISVGMatrix *getTransformToElement ([in] ISVGElement *pElement);
    [propputref, id (DISPID_ISVGPATHELEMENT_PATHLENGTH)] void pathLength (ISVGAnimatedNumber *v);
    [propget, id (DISPID_ISVGPATHELEMENT_PATHLENGTH)] ISVGAnimatedNumber *pathLength ();
    [id (DISPID_ISVGPATHELEMENT_GETTOTALLENGTH)] float getTotalLength ();
    [id (DISPID_ISVGPATHELEMENT_GETPOINTATLENGTH)] ISVGPoint *getPointAtLength ([in] float fltdistance);
    [id (DISPID_ISVGPATHELEMENT_GETPATHSEGATLENGTH)] long getPathSegAtLength ([in] float fltdistance);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCLOSEPATH)] ISVGPathSegClosePath *createSVGPathSegClosePath ();
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGMOVETOABS)] ISVGPathSegMovetoAbs *createSVGPathSegMovetoAbs ([in] float x,[in] float y);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGMOVETOREL)] ISVGPathSegMovetoRel *createSVGPathSegMovetoRel ([in] float x,[in] float y);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOABS)] ISVGPathSegLinetoAbs *createSVGPathSegLinetoAbs ([in] float x,[in] float y);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOREL)] ISVGPathSegLinetoRel *createSVGPathSegLinetoRel ([in] float x,[in] float y);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOCUBICABS)] ISVGPathSegCurvetoCubicAbs *createSVGPathSegCurvetoCubicAbs ([in] float x,[in] float y,[in] float x1,[in] float y1,[in] float x2,[in] float y2);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOCUBICREL)] ISVGPathSegCurvetoCubicRel *createSVGPathSegCurvetoCubicRel ([in] float x,[in] float y,[in] float x1,[in] float y1,[in] float x2,[in] float y2);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOQUADRATICABS)] ISVGPathSegCurvetoQuadraticAbs *createSVGPathSegCurvetoQuadraticAbs ([in] float x,[in] float y,[in] float x1,[in] float y1);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOQUADRATICREL)] ISVGPathSegCurvetoQuadraticRel *createSVGPathSegCurvetoQuadraticRel ([in] float x,[in] float y,[in] float x1,[in] float y1);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGARCABS)] ISVGPathSegArcAbs *createSVGPathSegArcAbs ([in] float x,[in] float y,[in] float r1,[in] float r2,[in] float angle,[in] VARIANT_BOOL largeArcFlag,[in] VARIANT_BOOL sweepFlag);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGARCREL)] ISVGPathSegArcRel *createSVGPathSegArcRel ([in] float x,[in] float y,[in] float r1,[in] float r2,[in] float angle,[in] VARIANT_BOOL largeArcFlag,[in] VARIANT_BOOL sweepFlag);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOHORIZONTALABS)] ISVGPathSegLinetoHorizontalAbs *createSVGPathSegLinetoHorizontalAbs ([in] float x);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOHORIZONTALREL)] ISVGPathSegLinetoHorizontalRel *createSVGPathSegLinetoHorizontalRel ([in] float x);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOVERTICALABS)] ISVGPathSegLinetoVerticalAbs *createSVGPathSegLinetoVerticalAbs ([in] float y);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOVERTICALREL)] ISVGPathSegLinetoVerticalRel *createSVGPathSegLinetoVerticalRel ([in] float y);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOCUBICSMOOTHABS)] ISVGPathSegCurvetoCubicSmoothAbs *createSVGPathSegCurvetoCubicSmoothAbs ([in] float x,[in] float y,[in] float x2,[in] float y2);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOCUBICSMOOTHREL)] ISVGPathSegCurvetoCubicSmoothRel *createSVGPathSegCurvetoCubicSmoothRel ([in] float x,[in] float y,[in] float x2,[in] float y2);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOQUADRATICSMOOTHABS)] ISVGPathSegCurvetoQuadraticSmoothAbs *createSVGPathSegCurvetoQuadraticSmoothAbs ([in] float x,[in] float y);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOQUADRATICSMOOTHREL)] ISVGPathSegCurvetoQuadraticSmoothRel *createSVGPathSegCurvetoQuadraticSmoothRel ([in] float x,[in] float y);
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
  };
  [noncreatable, uuid (305105b2-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathElement {
    [default] dispinterface DispSVGPathElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGAnimatedPathData;
    interface ISVGTransformable;
    interface ISVGLocatable;
    interface ISVGPathElement;
    interface ISVGElement;
    interface ISVGTests;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathElement;")
  typedef enum _svgPreserveAspectRatioAlignType {
    SVG_PRESERVEASPECTRATIO_UNKNOWN = 0,
    SVG_PRESERVEASPECTRATIO_NONE = 1,
    SVG_PRESERVEASPECTRATIO_XMINYMIN = 2,
    SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3,
    SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4,
    SVG_PRESERVEASPECTRATIO_XMINYMID = 5,
    SVG_PRESERVEASPECTRATIO_XMIDYMID = 6,
    SVG_PRESERVEASPECTRATIO_XMAXYMID = 7,
    SVG_PRESERVEASPECTRATIO_XMINYMAX = 8,
    SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9,
    SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10,
    svgPreserveAspectRatioAlignType_Max = 0x7FFFFFFF
  } svgPreserveAspectRatioAlignType;

  typedef enum _svgPreserveAspectMeetOrSliceType {
    SVG_MEETORSLICE_UNKNOWN = 0,
    SVG_MEETORSLICE_MEET = 1,
    SVG_MEETORSLICE_SLICE = 2,
    svgPreserveAspectMeetOrSliceType_Max = 0x7FFFFFFF
  } svgPreserveAspectMeetOrSliceType;
  [odl, oleautomation, dual, uuid (305104fa-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPreserveAspectRatio : IDispatch {
    [propput, id (DISPID_ISVGPRESERVEASPECTRATIO_ALIGN)] HRESULT align ([in] short v);
    [propget, id (DISPID_ISVGPRESERVEASPECTRATIO_ALIGN)] HRESULT align ([retval, out] short *p);
    [propput, id (DISPID_ISVGPRESERVEASPECTRATIO_MEETORSLICE)] HRESULT meetOrSlice ([in] short v);
    [propget, id (DISPID_ISVGPRESERVEASPECTRATIO_MEETORSLICE)] HRESULT meetOrSlice ([retval, out] short *p);
  };
  [noncreatable, uuid (305105d0-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPreserveAspectRatio {
    [default] interface ISVGPreserveAspectRatio;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPreserveAspectRatio;")
  [odl, oleautomation, dual, uuid (3051051c-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGTextElement : IDispatch {
  };
  [hidden, uuid (30590037-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGTextElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_X)] void x (ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_X)] ISVGAnimatedLengthList *x ();
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_Y)] void y (ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_Y)] ISVGAnimatedLengthList *y ();
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DX)] void dx (ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DX)] ISVGAnimatedLengthList *dx ();
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DY)] void dy (ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DY)] ISVGAnimatedLengthList *dy ();
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_ROTATE)] void rotate (ISVGAnimatedNumberList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_ROTATE)] ISVGAnimatedNumberList *rotate ();
    [propputref, id (DISPID_ISVGTEXTCONTENTELEMENT_TEXTLENGTH)] void textLength (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGTEXTCONTENTELEMENT_TEXTLENGTH)] ISVGAnimatedLength *textLength ();
    [propputref, id (DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)] void lengthAdjust (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)] ISVGAnimatedEnumeration *lengthAdjust ();
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETNUMBEROFCHARS)] long getNumberOfChars ();
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETCOMPUTEDTEXTLENGTH)] float getComputedTextLength ();
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETSUBSTRINGLENGTH)] float getSubStringLength ([in] long charnum,[in] long nchars);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETSTARTPOSITIONOFCHAR)] ISVGPoint *getStartPositionOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETENDPOSITIONOFCHAR)] ISVGPoint *getEndPositionOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETEXTENTOFCHAR)] ISVGRect *getExtentOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETROTATIONOFCHAR)] float getRotationOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETCHARNUMATPOSITION)] long getCharNumAtPosition ([in] ISVGPoint *point);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_SELECTSUBSTRING)] void selectSubString ([in] long charnum,[in] long nchars);
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] void xmllang (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] BSTR xmllang ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] void xmlspace (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] BSTR xmlspace ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] ISVGElement *nearestViewportElement ();
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] ISVGElement *farthestViewportElement ();
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] ISVGRect *getBBox ();
    [id (DISPID_ISVGLOCATABLE_GETCTM)] ISVGMatrix *getCTM ();
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] ISVGMatrix *getScreenCTM ();
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] ISVGMatrix *getTransformToElement ([in] ISVGElement *pElement);
  };
  [noncreatable, uuid (305105df-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGTextElement {
    [default] dispinterface DispSVGTextElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGTextElement;
    interface ISVGTextPositioningElement;
    interface ISVGTextContentElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGTransformable;
    interface ISVGLocatable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGTextElement;")
  interface ISVGPreserveAspectRatio;
  [odl, oleautomation, dual, uuid (305104fb-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedPreserveAspectRatio : IDispatch {
    [propputref, id (DISPID_ISVGANIMATEDPRESERVEASPECTRATIO_BASEVAL)] HRESULT baseVal ([in] ISVGPreserveAspectRatio *v);
    [propget, id (DISPID_ISVGANIMATEDPRESERVEASPECTRATIO_BASEVAL)] HRESULT baseVal ([retval, out] ISVGPreserveAspectRatio **p);
    [propputref, id (DISPID_ISVGANIMATEDPRESERVEASPECTRATIO_ANIMVAL)] HRESULT animVal ([in] ISVGPreserveAspectRatio *v);
    [propget, id (DISPID_ISVGANIMATEDPRESERVEASPECTRATIO_ANIMVAL)] HRESULT animVal ([retval, out] ISVGPreserveAspectRatio **p);
  };
  [noncreatable, uuid (305105ce-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedPreserveAspectRatio {
    [default] interface ISVGAnimatedPreserveAspectRatio;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedPreserveAspectRatio;")
  [odl, oleautomation, dual, uuid (305104f0-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGImageElement : IDispatch {
    [propputref, id (DISPID_ISVGIMAGEELEMENT_X)] HRESULT x ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGIMAGEELEMENT_X)] HRESULT x ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGIMAGEELEMENT_Y)] HRESULT y ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGIMAGEELEMENT_Y)] HRESULT y ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGIMAGEELEMENT_WIDTH)] HRESULT width ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGIMAGEELEMENT_WIDTH)] HRESULT width ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGIMAGEELEMENT_HEIGHT)] HRESULT height ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGIMAGEELEMENT_HEIGHT)] HRESULT height ([retval, out] ISVGAnimatedLength **p);
  };
  [hidden, uuid (30590027-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGImageElement {
    properties:
    methods:
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] ISVGElement *nearestViewportElement ();
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] ISVGElement *farthestViewportElement ();
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] ISVGRect *getBBox ();
    [id (DISPID_ISVGLOCATABLE_GETCTM)] ISVGMatrix *getCTM ();
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] ISVGMatrix *getScreenCTM ();
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] ISVGMatrix *getTransformToElement ([in] ISVGElement *pElement);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_VIEWBOX)] ISVGAnimatedRect *viewBox ();
    [propputref, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] void preserveAspectRatio (ISVGAnimatedPreserveAspectRatio *v);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] ISVGAnimatedPreserveAspectRatio *preserveAspectRatio ();
    [propputref, id (DISPID_ISVGIMAGEELEMENT_X)] void x (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGIMAGEELEMENT_X)] ISVGAnimatedLength *x ();
    [propputref, id (DISPID_ISVGIMAGEELEMENT_Y)] void y (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGIMAGEELEMENT_Y)] ISVGAnimatedLength *y ();
    [propputref, id (DISPID_ISVGIMAGEELEMENT_WIDTH)] void width (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGIMAGEELEMENT_WIDTH)] ISVGAnimatedLength *width ();
    [propputref, id (DISPID_ISVGIMAGEELEMENT_HEIGHT)] void height (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGIMAGEELEMENT_HEIGHT)] ISVGAnimatedLength *height ();
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
  };
  [noncreatable, uuid (305105cf-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGImageElement {
    [default] dispinterface DispSVGImageElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGElement;
    interface ISVGTransformable;
    interface ISVGLocatable;
    interface ISVGFitToViewBox;
    interface ISVGImageElement;
    interface ISVGURIReference;
    interface ISVGTests;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGImageElement;")
  typedef enum _svgUnitTypes {
    SVG_UNITTYPE_UNKNOWN = 0,
    SVG_UNITTYPE_USERSPACEONUSE = 1,
    SVG_UNITTYPE_OBJECTBOUNDINGBOX = 2,
    svgUnitTypes_Max = 0x7FFFFFFF
  } svgUnitTypes;
  [odl, oleautomation, dual, uuid (3051052b-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGStopElement : IDispatch {
    [propputref, id (DISPID_ISVGSTOPELEMENT_OFFSET)] HRESULT offset ([in] ISVGAnimatedNumber *v);
    [propget, id (DISPID_ISVGSTOPELEMENT_OFFSET)] HRESULT offset ([retval, out] ISVGAnimatedNumber **p);
  };
  [hidden, uuid (3059002d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGStopElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGSTOPELEMENT_OFFSET)] void offset (ISVGAnimatedNumber *v);
    [propget, id (DISPID_ISVGSTOPELEMENT_OFFSET)] ISVGAnimatedNumber *offset ();
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [noncreatable, uuid (305105d5-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGStopElement {
    [default] dispinterface DispSVGStopElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGStopElement;
    interface ISVGElement;
    interface ISVGStylable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGStopElement;")
  typedef enum _svgSpreadMethod {
    SVG_SPREADMETHOD_UNKNOWN = 0,
    SVG_SPREADMETHOD_PAD = 1,
    SVG_SPREADMETHOD_REFLECT = 2,
    SVG_SPREADMETHOD_REPEAT = 3,
    svgSpreadMethod_Max = 0x7FFFFFFF
  } svgSpreadMethod;
  [odl, oleautomation, dual, uuid (30510528-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGGradientElement : IDispatch {
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTUNITS)] HRESULT gradientUnits ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTUNITS)] HRESULT gradientUnits ([retval, out] ISVGAnimatedEnumeration **p);
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTTRANSFORM)] HRESULT gradientTransform ([in] ISVGAnimatedTransformList *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTTRANSFORM)] HRESULT gradientTransform ([retval, out] ISVGAnimatedTransformList **p);
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_SPREADMETHOD)] HRESULT spreadMethod ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_SPREADMETHOD)] HRESULT spreadMethod ([retval, out] ISVGAnimatedEnumeration **p);
  };
  [hidden, uuid (3059002e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGGradientElement {
    properties:
    methods:
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTUNITS)] void gradientUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTUNITS)] ISVGAnimatedEnumeration *gradientUnits ();
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTTRANSFORM)] void gradientTransform (ISVGAnimatedTransformList *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTTRANSFORM)] ISVGAnimatedTransformList *gradientTransform ();
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_SPREADMETHOD)] void spreadMethod (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_SPREADMETHOD)] ISVGAnimatedEnumeration *spreadMethod ();
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [noncreatable, uuid (305105d6-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGGradientElement {
    [default] dispinterface DispSVGGradientElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGElement;
    interface ISVGGradientElement;
    interface ISVGURIReference;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGGradientElement;")
  [odl, oleautomation, dual, uuid (30510529-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGLinearGradientElement : IDispatch {
    [propputref, id (DISPID_ISVGLINEARGRADIENTELEMENT_X1)] HRESULT x1 ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEARGRADIENTELEMENT_X1)] HRESULT x1 ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGLINEARGRADIENTELEMENT_Y1)] HRESULT y1 ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEARGRADIENTELEMENT_Y1)] HRESULT y1 ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGLINEARGRADIENTELEMENT_X2)] HRESULT x2 ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEARGRADIENTELEMENT_X2)] HRESULT x2 ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGLINEARGRADIENTELEMENT_Y2)] HRESULT y2 ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEARGRADIENTELEMENT_Y2)] HRESULT y2 ([retval, out] ISVGAnimatedLength **p);
  };
  [hidden, uuid (3059002a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGLinearGradientElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTUNITS)] void gradientUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTUNITS)] ISVGAnimatedEnumeration *gradientUnits ();
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTTRANSFORM)] void gradientTransform (ISVGAnimatedTransformList *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTTRANSFORM)] ISVGAnimatedTransformList *gradientTransform ();
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_SPREADMETHOD)] void spreadMethod (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_SPREADMETHOD)] ISVGAnimatedEnumeration *spreadMethod ();
    [propputref, id (DISPID_ISVGLINEARGRADIENTELEMENT_X1)] void x1 (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEARGRADIENTELEMENT_X1)] ISVGAnimatedLength *x1 ();
    [propputref, id (DISPID_ISVGLINEARGRADIENTELEMENT_Y1)] void y1 (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEARGRADIENTELEMENT_Y1)] ISVGAnimatedLength *y1 ();
    [propputref, id (DISPID_ISVGLINEARGRADIENTELEMENT_X2)] void x2 (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEARGRADIENTELEMENT_X2)] ISVGAnimatedLength *x2 ();
    [propputref, id (DISPID_ISVGLINEARGRADIENTELEMENT_Y2)] void y2 (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEARGRADIENTELEMENT_Y2)] ISVGAnimatedLength *y2 ();
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [noncreatable, uuid (305105d2-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGLinearGradientElement {
    [default] dispinterface DispSVGLinearGradientElement;
    interface ISVGGradientElement;
    interface ISVGLinearGradientElement;
    interface ISVGElement;
    interface ISVGURIReference;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGLinearGradientElement;")
  [odl, oleautomation, dual, uuid (3051052a-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGRadialGradientElement : IDispatch {
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_CX)] HRESULT cx ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_CX)] HRESULT cx ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_CY)] HRESULT cy ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_CY)] HRESULT cy ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_R)] HRESULT r ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_R)] HRESULT r ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_FX)] HRESULT fx ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_FX)] HRESULT fx ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_FY)] HRESULT fy ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_FY)] HRESULT fy ([retval, out] ISVGAnimatedLength **p);
  };
  [hidden, uuid (3059002b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGRadialGradientElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTUNITS)] void gradientUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTUNITS)] ISVGAnimatedEnumeration *gradientUnits ();
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTTRANSFORM)] void gradientTransform (ISVGAnimatedTransformList *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTTRANSFORM)] ISVGAnimatedTransformList *gradientTransform ();
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_SPREADMETHOD)] void spreadMethod (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_SPREADMETHOD)] ISVGAnimatedEnumeration *spreadMethod ();
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_CX)] void cx (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_CX)] ISVGAnimatedLength *cx ();
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_CY)] void cy (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_CY)] ISVGAnimatedLength *cy ();
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_R)] void r (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_R)] ISVGAnimatedLength *r ();
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_FX)] void fx (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_FX)] ISVGAnimatedLength *fx ();
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_FY)] void fy (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_FY)] ISVGAnimatedLength *fy ();
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [noncreatable, uuid (305105d3-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGRadialGradientElement {
    [default] dispinterface DispSVGRadialGradientElement;
    interface ISVGGradientElement;
    interface ISVGRadialGradientElement;
    interface ISVGElement;
    interface ISVGURIReference;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGRadialGradientElement;")
  [odl, oleautomation, dual, uuid (3051052e-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGMaskElement : IDispatch {
    [propputref, id (DISPID_ISVGMASKELEMENT_MASKUNITS)] HRESULT maskUnits ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGMASKELEMENT_MASKUNITS)] HRESULT maskUnits ([retval, out] ISVGAnimatedEnumeration **p);
    [propputref, id (DISPID_ISVGMASKELEMENT_MASKCONTENTUNITS)] HRESULT maskContentUnits ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGMASKELEMENT_MASKCONTENTUNITS)] HRESULT maskContentUnits ([retval, out] ISVGAnimatedEnumeration **p);
    [propputref, id (DISPID_ISVGMASKELEMENT_X)] HRESULT x ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMASKELEMENT_X)] HRESULT x ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGMASKELEMENT_Y)] HRESULT y ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMASKELEMENT_Y)] HRESULT y ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGMASKELEMENT_WIDTH)] HRESULT width ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMASKELEMENT_WIDTH)] HRESULT width ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGMASKELEMENT_HEIGHT)] HRESULT height ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMASKELEMENT_HEIGHT)] HRESULT height ([retval, out] ISVGAnimatedLength **p);
  };
  [hidden, uuid (3059003c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGMaskElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGMASKELEMENT_MASKUNITS)] void maskUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGMASKELEMENT_MASKUNITS)] ISVGAnimatedEnumeration *maskUnits ();
    [propputref, id (DISPID_ISVGMASKELEMENT_MASKCONTENTUNITS)] void maskContentUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGMASKELEMENT_MASKCONTENTUNITS)] ISVGAnimatedEnumeration *maskContentUnits ();
    [propputref, id (DISPID_ISVGMASKELEMENT_X)] void x (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMASKELEMENT_X)] ISVGAnimatedLength *x ();
    [propputref, id (DISPID_ISVGMASKELEMENT_Y)] void y (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMASKELEMENT_Y)] ISVGAnimatedLength *y ();
    [propputref, id (DISPID_ISVGMASKELEMENT_WIDTH)] void width (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMASKELEMENT_WIDTH)] ISVGAnimatedLength *width ();
    [propputref, id (DISPID_ISVGMASKELEMENT_HEIGHT)] void height (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMASKELEMENT_HEIGHT)] ISVGAnimatedLength *height ();
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] void xmllang (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] BSTR xmllang ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] void xmlspace (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] BSTR xmlspace ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [noncreatable, uuid (305105e7-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGMaskElement {
    [default] dispinterface DispSVGMaskElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGMaskElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGMaskElement;")
  typedef enum _svgFeblendMode {
    SVG_FEBLEND_MODE_UNKNOWN = 0,
    SVG_FEBLEND_MODE_NORMAL = 1,
    SVG_FEBLEND_MODE_MULTIPLY = 2,
    SVG_FEBLEND_MODE_SCREEN = 3,
    SVG_FEBLEND_MODE_DARKEN = 4,
    SVG_FEBLEND_MODE_LIGHTEN = 5,
    svgFeblendMode_Max = 0x7FFFFFFF
  } svgFeblendMode;

  typedef enum _svgFecolormatrixType {
    SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0,
    SVG_FECOLORMATRIX_TYPE_MATRIX = 1,
    SVG_FECOLORMATRIX_TYPE_SATURATE = 2,
    SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3,
    SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4,
    svgFecolormatrixType_Max = 0x7FFFFFFF
  } svgFecolormatrixType;

  typedef enum _svgFecomponenttransferType {
    SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0,
    SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1,
    SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2,
    SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3,
    SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4,
    SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5,
    svgFecomponenttransferType_Max = 0x7FFFFFFF
  } svgFecomponenttransferType;

  typedef enum _svgFecompositeOperator {
    SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0,
    SVG_FECOMPOSITE_OPERATOR_OVER = 1,
    SVG_FECOMPOSITE_OPERATOR_IN = 2,
    SVG_FECOMPOSITE_OPERATOR_OUT = 3,
    SVG_FECOMPOSITE_OPERATOR_ATOP = 4,
    SVG_FECOMPOSITE_OPERATOR_XOR = 5,
    SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6,
    svgFecompositeOperator_Max = 0x7FFFFFFF
  } svgFecompositeOperator;

  typedef enum _svgEdgemode {
    SVG_EDGEMODE_UNKNOWN = 0,
    SVG_EDGEMODE_DUPLICATE = 1,
    SVG_EDGEMODE_WRAP = 2,
    SVG_EDGEMODE_NONE = 3,
    svgEdgemode_Max = 0x7FFFFFFF
  } svgEdgemode;

  typedef enum _svgPreserveAlpha {
    SVG_PRESERVEALPHA_FALSE = 0,
    SVG_PRESERVEALPHA_TRUE = 1,
    svgPreserveAlpha_Max = 0x7FFFFFFF
  } svgPreserveAlpha;

  typedef enum _svgChannel {
    SVG_CHANNEL_UNKNOWN = 0,
    SVG_CHANNEL_R = 1,
    SVG_CHANNEL_G = 2,
    SVG_CHANNEL_B = 3,
    SVG_CHANNEL_A = 4,
    svgChannel_Max = 0x7FFFFFFF
  } svgChannel;

  typedef enum _svgMorphologyOperator {
    SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0,
    SVG_MORPHOLOGY_OPERATOR_ERODE = 1,
    SVG_MORPHOLOGY_OPERATOR_DILATE = 2,
    svgMorphologyOperator_Max = 0x7FFFFFFF
  } svgMorphologyOperator;

  typedef enum _svgTurbulenceType {
    SVG_TURBULENCE_TYPE_UNKNOWN = 0,
    SVG_TURBULENCE_TYPE_FACTALNOISE = 1,
    SVG_TURBULENCE_TYPE_TURBULENCE = 2,
    svgTurbulenceType_Max = 0x7FFFFFFF
  } svgTurbulenceType;

  typedef enum _svgStitchtype {
    SVG_STITCHTYPE_UNKNOWN = 0,
    SVG_STITCHTYPE_STITCH = 1,
    SVG_STITCHTYPE_NOSTITCH = 2,
    svgStitchtype_Max = 0x7FFFFFFF
  } svgStitchtype;

  typedef enum _svgMarkerUnits {
    SVG_MARKERUNITS_UNKNOWN = 0,
    SVG_MARKERUNITS_USERSPACEONUSE = 1,
    SVG_MARKERUNITS_STROKEWIDTH = 2,
    svgMarkerUnits_Max = 0x7FFFFFFF
  } svgMarkerUnits;

  typedef enum _svgMarkerOrient {
    SVG_MARKER_ORIENT_UNKNOWN = 0,
    SVG_MARKER_ORIENT_AUTO = 1,
    SVG_MARKER_ORIENT_ANGLE = 2,
    svgMarkerOrient_Max = 0x7FFFFFFF
  } svgMarkerOrient;

  typedef enum _svgMarkerOrientAttribute {
    svgMarkerOrientAttributeAuto = 0,
    svgMarkerOrientAttribute_Max = 0x7FFFFFFF
  } svgMarkerOrientAttribute;
  [odl, oleautomation, dual, uuid (30510525-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGMarkerElement : IDispatch {
    [propputref, id (DISPID_ISVGMARKERELEMENT_REFX)] HRESULT refX ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_REFX)] HRESULT refX ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGMARKERELEMENT_REFY)] HRESULT refY ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_REFY)] HRESULT refY ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGMARKERELEMENT_MARKERUNITS)] HRESULT markerUnits ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_MARKERUNITS)] HRESULT markerUnits ([retval, out] ISVGAnimatedEnumeration **p);
    [propputref, id (DISPID_ISVGMARKERELEMENT_MARKERWIDTH)] HRESULT markerWidth ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_MARKERWIDTH)] HRESULT markerWidth ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGMARKERELEMENT_MARKERHEIGHT)] HRESULT markerHeight ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_MARKERHEIGHT)] HRESULT markerHeight ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGMARKERELEMENT_ORIENTTYPE)] HRESULT orientType ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_ORIENTTYPE)] HRESULT orientType ([retval, out] ISVGAnimatedEnumeration **p);
    [propputref, id (DISPID_ISVGMARKERELEMENT_ORIENTANGLE)] HRESULT orientAngle ([in] ISVGAnimatedAngle *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_ORIENTANGLE)] HRESULT orientAngle ([retval, out] ISVGAnimatedAngle **p);
    [id (DISPID_ISVGMARKERELEMENT_SETORIENTTOAUTO)] HRESULT setOrientToAuto ();
    [id (DISPID_ISVGMARKERELEMENT_SETORIENTTOANGLE)] HRESULT setOrientToAngle ([in] ISVGAngle *pSVGAngle);
  };
  [hidden, uuid (30590036-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGMarkerElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGMARKERELEMENT_REFX)] void refX (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_REFX)] ISVGAnimatedLength *refX ();
    [propputref, id (DISPID_ISVGMARKERELEMENT_REFY)] void refY (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_REFY)] ISVGAnimatedLength *refY ();
    [propputref, id (DISPID_ISVGMARKERELEMENT_MARKERUNITS)] void markerUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_MARKERUNITS)] ISVGAnimatedEnumeration *markerUnits ();
    [propputref, id (DISPID_ISVGMARKERELEMENT_MARKERWIDTH)] void markerWidth (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_MARKERWIDTH)] ISVGAnimatedLength *markerWidth ();
    [propputref, id (DISPID_ISVGMARKERELEMENT_MARKERHEIGHT)] void markerHeight (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_MARKERHEIGHT)] ISVGAnimatedLength *markerHeight ();
    [propputref, id (DISPID_ISVGMARKERELEMENT_ORIENTTYPE)] void orientType (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_ORIENTTYPE)] ISVGAnimatedEnumeration *orientType ();
    [propputref, id (DISPID_ISVGMARKERELEMENT_ORIENTANGLE)] void orientAngle (ISVGAnimatedAngle *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_ORIENTANGLE)] ISVGAnimatedAngle *orientAngle ();
    [id (DISPID_ISVGMARKERELEMENT_SETORIENTTOAUTO)] void setOrientToAuto ();
    [id (DISPID_ISVGMARKERELEMENT_SETORIENTTOANGLE)] void setOrientToAngle ([in] ISVGAngle *pSVGAngle);
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] void xmllang (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] BSTR xmllang ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] void xmlspace (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] BSTR xmlspace ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGFITTOVIEWBOX_VIEWBOX)] ISVGAnimatedRect *viewBox ();
    [propputref, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] void preserveAspectRatio (ISVGAnimatedPreserveAspectRatio *v);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] ISVGAnimatedPreserveAspectRatio *preserveAspectRatio ();
  };
  [noncreatable, uuid (305105de-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGMarkerElement {
    [default] dispinterface DispSVGMarkerElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGMarkerElement;
    interface ISVGElement;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGFitToViewBox;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGMarkerElement;")
  [odl, oleautomation, dual, uuid (3051054e-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGZoomEvent : IDispatch {
    [propget, id (DISPID_ISVGZOOMEVENT_ZOOMRECTSCREEN)] HRESULT zoomRectScreen ([retval, out] ISVGRect **p);
    [propget, id (DISPID_ISVGZOOMEVENT_PREVIOUSSCALE)] HRESULT previousScale ([retval, out] float *p);
    [propget, id (DISPID_ISVGZOOMEVENT_PREVIOUSTRANSLATE)] HRESULT previousTranslate ([retval, out] ISVGPoint **p);
    [propget, id (DISPID_ISVGZOOMEVENT_NEWSCALE)] HRESULT newScale ([retval, out] float *p);
    [propget, id (DISPID_ISVGZOOMEVENT_NEWTRANSLATE)] HRESULT newTranslate ([retval, out] ISVGPoint **p);
  };
  [hidden, uuid (30590031-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGZoomEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMUIEVENT_VIEW)] IHTMLWindow2 *view ();
    [propget, id (DISPID_IDOMUIEVENT_DETAIL)] long detail ();
    [id (DISPID_IDOMUIEVENT_INITUIEVENT)] void initUIEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *view,[in] long detail);
    [propget, id (DISPID_ISVGZOOMEVENT_ZOOMRECTSCREEN)] ISVGRect *zoomRectScreen ();
    [propget, id (DISPID_ISVGZOOMEVENT_PREVIOUSSCALE)] float previousScale ();
    [propget, id (DISPID_ISVGZOOMEVENT_PREVIOUSTRANSLATE)] ISVGPoint *previousTranslate ();
    [propget, id (DISPID_ISVGZOOMEVENT_NEWSCALE)] float newScale ();
    [propget, id (DISPID_ISVGZOOMEVENT_NEWTRANSLATE)] ISVGPoint *newTranslate ();
  };
  [noncreatable, uuid (305105d9-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGZoomEvent {
    [default] dispinterface DispSVGZoomEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface ISVGZoomEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGZoomEvent;")
  [odl, oleautomation, dual, uuid (3051054b-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAElement : IDispatch {
    [propputref, id (DISPID_ISVGAELEMENT_TARGET)] HRESULT target ([in] ISVGAnimatedString *v);
    [propget, id (DISPID_ISVGAELEMENT_TARGET)] HRESULT target ([retval, out] ISVGAnimatedString **p);
  };
  [hidden, uuid (30590033-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGAElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGAELEMENT_TARGET)] void target (ISVGAnimatedString *v);
    [propget, id (DISPID_ISVGAELEMENT_TARGET)] ISVGAnimatedString *target ();
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] void xmllang (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] BSTR xmllang ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] void xmlspace (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] BSTR xmlspace ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] ISVGElement *nearestViewportElement ();
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] ISVGElement *farthestViewportElement ();
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] ISVGRect *getBBox ();
    [id (DISPID_ISVGLOCATABLE_GETCTM)] ISVGMatrix *getCTM ();
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] ISVGMatrix *getScreenCTM ();
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] ISVGMatrix *getTransformToElement ([in] ISVGElement *pElement);
  };
  [noncreatable, uuid (305105db-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAElement {
    [default] dispinterface DispSVGAElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGAElement;
    interface ISVGElement;
    interface ISVGURIReference;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGTransformable;
    interface ISVGLocatable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAElement;")
  [odl, oleautomation, dual, uuid (3051054c-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGViewElement : IDispatch {
    [propputref, id (DISPID_ISVGVIEWELEMENT_VIEWTARGET)] HRESULT viewTarget ([in] ISVGStringList *v);
    [propget, id (DISPID_ISVGVIEWELEMENT_VIEWTARGET)] HRESULT viewTarget ([retval, out] ISVGStringList **p);
  };
  [hidden, uuid (30590034-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGViewElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGVIEWELEMENT_VIEWTARGET)] void viewTarget (ISVGStringList *v);
    [propget, id (DISPID_ISVGVIEWELEMENT_VIEWTARGET)] ISVGStringList *viewTarget ();
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGFITTOVIEWBOX_VIEWBOX)] ISVGAnimatedRect *viewBox ();
    [propputref, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] void preserveAspectRatio (ISVGAnimatedPreserveAspectRatio *v);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] ISVGAnimatedPreserveAspectRatio *preserveAspectRatio ();
    [propget, id (DISPID_ISVGZOOMANDPAN_ZOOMANDPAN)] short zoomAndPan ();
  };
  [noncreatable, uuid (305105dc-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGViewElement {
    [default] dispinterface DispSVGViewElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGViewElement;
    interface ISVGElement;
    interface ISVGExternalResourcesRequired;
    interface ISVGFitToViewBox;
    interface ISVGZoomAndPan;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGViewElement;")
  typedef enum _htmlMediaNetworkState {
    htmlMediaNetworkStateEmpty = 0,
    htmlMediaNetworkStateIdle = 1,
    htmlMediaNetworkStateLoading = 2,
    htmlMediaNetworkStateNoSource = 3,
    htmlMediaNetworkState_Max = 0x7FFFFFFF
  } htmlMediaNetworkState;

  typedef enum _htmlMediaReadyState {
    htmlMediaReadyStateHaveNothing = 0,
    htmlMediaReadyStateHaveMetadata = 1,
    htmlMediaReadyStateHaveCurrentData = 2,
    htmlMediaReadyStateHaveFutureData = 3,
    htmlMediaReadyStateHaveEnoughData = 4,
    htmlMediaReadyState_Max = 0x7FFFFFFF
  } htmlMediaReadyState;

  typedef enum _htmlMediaErr {
    htmlMediaErrAborted = 0,
    htmlMediaErrNetwork = 1,
    htmlMediaErrDecode = 2,
    htmlMediaErrSrcNotSupported = 3,
    htmlMediaErr_Max = 0x7FFFFFFF
  } htmlMediaErr;
  [odl, oleautomation, dual, uuid (30510704-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMediaError : IDispatch {
    [propget, id (DISPID_IHTMLMEDIAERROR_CODE)] HRESULT code ([retval, out] short *p);
  };
  [odl, oleautomation, dual, uuid (30510705-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTimeRanges : IDispatch {
    [propget, id (DISPID_IHTMLTIMERANGES_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLTIMERANGES_START)] HRESULT start ([in] long index,[retval, out] float *startTime);
    [id (DISPID_IHTMLTIMERANGES_END)] HRESULT end ([in] long index,[retval, out] float *endTime);
  };
  [odl, oleautomation, dual, uuid (3051080b-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTimeRanges2 : IDispatch {
    [id (DISPID_IHTMLTIMERANGES2_STARTDOUBLE)] HRESULT startDouble ([in] long index,[retval, out] double *startTime);
    [id (DISPID_IHTMLTIMERANGES2_ENDDOUBLE)] HRESULT endDouble ([in] long index,[retval, out] double *endTime);
  };
  [odl, oleautomation, dual, uuid (30510706-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMediaElement : IDispatch {
    [propget, id (DISPID_IHTMLMEDIAELEMENT_ERROR)] HRESULT error ([retval, out] IHTMLMediaError **p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_SRC), displaybind, bindable] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SRC), displaybind, bindable] HRESULT src ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CURRENTSRC), displaybind, bindable] HRESULT currentSrc ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_NETWORKSTATE), displaybind, bindable] HRESULT networkState ([retval, out] USHORT *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_PRELOAD), displaybind, bindable] HRESULT preload ([in] BSTR v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PRELOAD), displaybind, bindable] HRESULT preload ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_BUFFERED), displaybind, bindable] HRESULT buffered ([retval, out] IHTMLTimeRanges **p);
    [id (DISPID_IHTMLMEDIAELEMENT_LOAD)] HRESULT load ();
    [id (DISPID_IHTMLMEDIAELEMENT_CANPLAYTYPE)] HRESULT canPlayType ([in] BSTR type,[retval, out] BSTR *canPlay);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SEEKING), displaybind, bindable] HRESULT seeking ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_CURRENTTIME), displaybind, bindable] HRESULT currentTime ([in] float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CURRENTTIME), displaybind, bindable] HRESULT currentTime ([retval, out] float *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_INITIALTIME), displaybind, bindable] HRESULT initialTime ([retval, out] float *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_DURATION), displaybind, bindable] HRESULT duration ([retval, out] float *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PAUSED), displaybind, bindable] HRESULT paused ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_DEFAULTPLAYBACKRATE), displaybind, bindable] HRESULT defaultPlaybackRate ([in] float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_DEFAULTPLAYBACKRATE), displaybind, bindable] HRESULT defaultPlaybackRate ([retval, out] float *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_PLAYBACKRATE), displaybind, bindable] HRESULT playbackRate ([in] float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PLAYBACKRATE), displaybind, bindable] HRESULT playbackRate ([retval, out] float *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PLAYED), displaybind, bindable] HRESULT played ([retval, out] IHTMLTimeRanges **p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SEEKABLE), displaybind, bindable] HRESULT seekable ([retval, out] IHTMLTimeRanges **p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_ENDED), displaybind, bindable] HRESULT ended ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_AUTOPLAY), displaybind, bindable] HRESULT autoplay ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_AUTOPLAY), displaybind, bindable] HRESULT autoplay ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_LOOP), displaybind, bindable] HRESULT loop ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_LOOP), displaybind, bindable] HRESULT loop ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLMEDIAELEMENT_PLAY)] HRESULT play ();
    [id (DISPID_IHTMLMEDIAELEMENT_PAUSE)] HRESULT pause ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_CONTROLS), displaybind, bindable] HRESULT controls ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CONTROLS), displaybind, bindable] HRESULT controls ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_VOLUME), displaybind, bindable] HRESULT volume ([in] float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_VOLUME), displaybind, bindable] HRESULT volume ([retval, out] float *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_MUTED), displaybind, bindable] HRESULT muted ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_MUTED), displaybind, bindable] HRESULT muted ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_AUTOBUFFER), displaybind, bindable] HRESULT autobuffer ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_AUTOBUFFER), displaybind, bindable] HRESULT autobuffer ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (30510809-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMediaElement2 : IDispatch {
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_CURRENTTIMEDOUBLE), displaybind, bindable] HRESULT currentTimeDouble ([in] double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_CURRENTTIMEDOUBLE), displaybind, bindable] HRESULT currentTimeDouble ([retval, out] double *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_INITIALTIMEDOUBLE), displaybind, bindable] HRESULT initialTimeDouble ([retval, out] double *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_DURATIONDOUBLE), displaybind, bindable] HRESULT durationDouble ([retval, out] double *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_DEFAULTPLAYBACKRATEDOUBLE), displaybind, bindable] HRESULT defaultPlaybackRateDouble ([in] double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_DEFAULTPLAYBACKRATEDOUBLE), displaybind, bindable] HRESULT defaultPlaybackRateDouble ([retval, out] double *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_PLAYBACKRATEDOUBLE), displaybind, bindable] HRESULT playbackRateDouble ([in] double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_PLAYBACKRATEDOUBLE), displaybind, bindable] HRESULT playbackRateDouble ([retval, out] double *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_VOLUMEDOUBLE), displaybind, bindable] HRESULT volumeDouble ([in] double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_VOLUMEDOUBLE), displaybind, bindable] HRESULT volumeDouble ([retval, out] double *p);
  };
  [odl, oleautomation, dual, uuid (30510792-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMSMediaElement : IDispatch {
    [propput, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTODISABLED), displaybind, bindable] HRESULT msPlayToDisabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTODISABLED), displaybind, bindable] HRESULT msPlayToDisabled ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] HRESULT msPlayToPrimary ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] HRESULT msPlayToPrimary ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (30510707-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSourceElement : IDispatch {
    [propput, id (DISPID_IHTMLSOURCEELEMENT_SRC)] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLSOURCEELEMENT_SRC)] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSOURCEELEMENT_TYPE)] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLSOURCEELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSOURCEELEMENT_MEDIA)] HRESULT media ([in] BSTR v);
    [propget, id (DISPID_IHTMLSOURCEELEMENT_MEDIA)] HRESULT media ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510708-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAudioElement : IDispatch {
  };
  [odl, oleautomation, dual, uuid (30510709-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLVideoElement : IDispatch {
    [propput, id (DISPID_IHTMLVIDEOELEMENT_WIDTH), displaybind, bindable] HRESULT width ([in] long v);
    [propget, id (DISPID_IHTMLVIDEOELEMENT_WIDTH), displaybind, bindable] HRESULT width ([retval, out] long *p);
    [propput, id (DISPID_IHTMLVIDEOELEMENT_HEIGHT), displaybind, bindable] HRESULT height ([in] long v);
    [propget, id (DISPID_IHTMLVIDEOELEMENT_HEIGHT), displaybind, bindable] HRESULT height ([retval, out] long *p);
    [propget, id (DISPID_IHTMLVIDEOELEMENT_VIDEOWIDTH), displaybind, bindable] HRESULT videoWidth ([retval, out] ULONG *p);
    [propget, id (DISPID_IHTMLVIDEOELEMENT_VIDEOHEIGHT), displaybind, bindable] HRESULT videoHeight ([retval, out] ULONG *p);
    [propput, id (DISPID_IHTMLVIDEOELEMENT_POSTER), displaybind, bindable] HRESULT poster ([in] BSTR v);
    [propget, id (DISPID_IHTMLVIDEOELEMENT_POSTER), displaybind, bindable] HRESULT poster ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305107eb-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAudioElementFactory : IDispatch {
    [id (DISPID_IHTMLAUDIOELEMENTFACTORY_CREATE)] HRESULT create ([optional, in] VARIANT src,[retval, out] IHTMLAudioElement **);
  };
  [hidden, uuid (30590086-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLMediaError {
    properties:
    methods:
    [propget, id (DISPID_IHTMLMEDIAERROR_CODE)] short code ();
  };
  [noncreatable, uuid (3051070a-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLMediaError {
    [default] dispinterface DispHTMLMediaError;
    interface IHTMLMediaError;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMediaError;")
  [hidden, uuid (30590087-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTimeRanges {
    properties:
    methods:
    [propget, id (DISPID_IHTMLTIMERANGES_LENGTH)] long length ();
    [id (DISPID_IHTMLTIMERANGES_START)] float start ([in] long index);
    [id (DISPID_IHTMLTIMERANGES_END)] float end ([in] long index);
    [id (DISPID_IHTMLTIMERANGES2_STARTDOUBLE)] double startDouble ([in] long index);
    [id (DISPID_IHTMLTIMERANGES2_ENDDOUBLE)] double endDouble ([in] long index);
  };
  [noncreatable, uuid (3051070b-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTimeRanges {
    [default] dispinterface DispHTMLTimeRanges;
    interface IHTMLTimeRanges;
    interface IHTMLTimeRanges2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTimeRanges;")
  [hidden, uuid (30590088-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLMediaElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_ERROR)] IHTMLMediaError *error ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_SRC), displaybind, bindable] void src (BSTR v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SRC), displaybind, bindable] BSTR src ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CURRENTSRC), displaybind, bindable] BSTR currentSrc ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_NETWORKSTATE), displaybind, bindable] USHORT networkState ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_PRELOAD), displaybind, bindable] void preload (BSTR v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PRELOAD), displaybind, bindable] BSTR preload ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_BUFFERED), displaybind, bindable] IHTMLTimeRanges *buffered ();
    [id (DISPID_IHTMLMEDIAELEMENT_LOAD)] void load ();
    [id (DISPID_IHTMLMEDIAELEMENT_CANPLAYTYPE)] BSTR canPlayType ([in] BSTR type);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SEEKING), displaybind, bindable] VARIANT_BOOL seeking ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_CURRENTTIME), displaybind, bindable] void currentTime (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CURRENTTIME), displaybind, bindable] float currentTime ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_INITIALTIME), displaybind, bindable] float initialTime ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_DURATION), displaybind, bindable] float duration ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PAUSED), displaybind, bindable] VARIANT_BOOL paused ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_DEFAULTPLAYBACKRATE), displaybind, bindable] void defaultPlaybackRate (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_DEFAULTPLAYBACKRATE), displaybind, bindable] float defaultPlaybackRate ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_PLAYBACKRATE), displaybind, bindable] void playbackRate (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PLAYBACKRATE), displaybind, bindable] float playbackRate ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PLAYED), displaybind, bindable] IHTMLTimeRanges *played ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SEEKABLE), displaybind, bindable] IHTMLTimeRanges *seekable ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_ENDED), displaybind, bindable] VARIANT_BOOL ended ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_AUTOPLAY), displaybind, bindable] void autoplay (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_AUTOPLAY), displaybind, bindable] VARIANT_BOOL autoplay ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_LOOP), displaybind, bindable] void loop (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_LOOP), displaybind, bindable] VARIANT_BOOL loop ();
    [id (DISPID_IHTMLMEDIAELEMENT_PLAY)] void play ();
    [id (DISPID_IHTMLMEDIAELEMENT_PAUSE)] void pause ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_CONTROLS), displaybind, bindable] void controls (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CONTROLS), displaybind, bindable] VARIANT_BOOL controls ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_VOLUME), displaybind, bindable] void volume (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_VOLUME), displaybind, bindable] float volume ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_MUTED), displaybind, bindable] void muted (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_MUTED), displaybind, bindable] VARIANT_BOOL muted ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_AUTOBUFFER), displaybind, bindable] void autobuffer (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_AUTOBUFFER), displaybind, bindable] VARIANT_BOOL autobuffer ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_CURRENTTIMEDOUBLE), displaybind, bindable] void currentTimeDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_CURRENTTIMEDOUBLE), displaybind, bindable] double currentTimeDouble ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_INITIALTIMEDOUBLE), displaybind, bindable] double initialTimeDouble ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_DURATIONDOUBLE), displaybind, bindable] double durationDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_DEFAULTPLAYBACKRATEDOUBLE), displaybind, bindable] void defaultPlaybackRateDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_DEFAULTPLAYBACKRATEDOUBLE), displaybind, bindable] double defaultPlaybackRateDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_PLAYBACKRATEDOUBLE), displaybind, bindable] void playbackRateDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_PLAYBACKRATEDOUBLE), displaybind, bindable] double playbackRateDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_VOLUMEDOUBLE), displaybind, bindable] void volumeDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_VOLUMEDOUBLE), displaybind, bindable] double volumeDouble ();
    [propput, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTODISABLED), displaybind, bindable] void msPlayToDisabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTODISABLED), displaybind, bindable] VARIANT_BOOL msPlayToDisabled ();
    [propput, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] void msPlayToPrimary (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] VARIANT_BOOL msPlayToPrimary ();
  };
  [noncreatable, uuid (3051070c-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLMediaElement {
    [default] dispinterface DispHTMLMediaElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLMediaElement;
    interface IHTMLMediaElement2;
    interface IHTMLMSMediaElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMediaElement;")
  [hidden, uuid (30590089-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLSourceElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLSOURCEELEMENT_SRC)] void src (BSTR v);
    [propget, id (DISPID_IHTMLSOURCEELEMENT_SRC)] BSTR src ();
    [propput, id (DISPID_IHTMLSOURCEELEMENT_TYPE)] void type (BSTR v);
    [propget, id (DISPID_IHTMLSOURCEELEMENT_TYPE)] BSTR type ();
    [propput, id (DISPID_IHTMLSOURCEELEMENT_MEDIA)] void media (BSTR v);
    [propget, id (DISPID_IHTMLSOURCEELEMENT_MEDIA)] BSTR media ();
  };
  [noncreatable, uuid (3051070d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLSourceElement {
    [default] dispinterface DispHTMLSourceElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLSourceElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSourceElement;")
  [hidden, uuid (3059008a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLAudioElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_ERROR)] IHTMLMediaError *error ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_SRC), displaybind, bindable] void src (BSTR v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SRC), displaybind, bindable] BSTR src ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CURRENTSRC), displaybind, bindable] BSTR currentSrc ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_NETWORKSTATE), displaybind, bindable] USHORT networkState ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_PRELOAD), displaybind, bindable] void preload (BSTR v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PRELOAD), displaybind, bindable] BSTR preload ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_BUFFERED), displaybind, bindable] IHTMLTimeRanges *buffered ();
    [id (DISPID_IHTMLMEDIAELEMENT_LOAD)] void load ();
    [id (DISPID_IHTMLMEDIAELEMENT_CANPLAYTYPE)] BSTR canPlayType ([in] BSTR type);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SEEKING), displaybind, bindable] VARIANT_BOOL seeking ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_CURRENTTIME), displaybind, bindable] void currentTime (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CURRENTTIME), displaybind, bindable] float currentTime ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_INITIALTIME), displaybind, bindable] float initialTime ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_DURATION), displaybind, bindable] float duration ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PAUSED), displaybind, bindable] VARIANT_BOOL paused ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_DEFAULTPLAYBACKRATE), displaybind, bindable] void defaultPlaybackRate (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_DEFAULTPLAYBACKRATE), displaybind, bindable] float defaultPlaybackRate ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_PLAYBACKRATE), displaybind, bindable] void playbackRate (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PLAYBACKRATE), displaybind, bindable] float playbackRate ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PLAYED), displaybind, bindable] IHTMLTimeRanges *played ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SEEKABLE), displaybind, bindable] IHTMLTimeRanges *seekable ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_ENDED), displaybind, bindable] VARIANT_BOOL ended ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_AUTOPLAY), displaybind, bindable] void autoplay (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_AUTOPLAY), displaybind, bindable] VARIANT_BOOL autoplay ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_LOOP), displaybind, bindable] void loop (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_LOOP), displaybind, bindable] VARIANT_BOOL loop ();
    [id (DISPID_IHTMLMEDIAELEMENT_PLAY)] void play ();
    [id (DISPID_IHTMLMEDIAELEMENT_PAUSE)] void pause ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_CONTROLS), displaybind, bindable] void controls (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CONTROLS), displaybind, bindable] VARIANT_BOOL controls ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_VOLUME), displaybind, bindable] void volume (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_VOLUME), displaybind, bindable] float volume ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_MUTED), displaybind, bindable] void muted (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_MUTED), displaybind, bindable] VARIANT_BOOL muted ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_AUTOBUFFER), displaybind, bindable] void autobuffer (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_AUTOBUFFER), displaybind, bindable] VARIANT_BOOL autobuffer ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_CURRENTTIMEDOUBLE), displaybind, bindable] void currentTimeDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_CURRENTTIMEDOUBLE), displaybind, bindable] double currentTimeDouble ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_INITIALTIMEDOUBLE), displaybind, bindable] double initialTimeDouble ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_DURATIONDOUBLE), displaybind, bindable] double durationDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_DEFAULTPLAYBACKRATEDOUBLE), displaybind, bindable] void defaultPlaybackRateDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_DEFAULTPLAYBACKRATEDOUBLE), displaybind, bindable] double defaultPlaybackRateDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_PLAYBACKRATEDOUBLE), displaybind, bindable] void playbackRateDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_PLAYBACKRATEDOUBLE), displaybind, bindable] double playbackRateDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_VOLUMEDOUBLE), displaybind, bindable] void volumeDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_VOLUMEDOUBLE), displaybind, bindable] double volumeDouble ();
    [propput, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTODISABLED), displaybind, bindable] void msPlayToDisabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTODISABLED), displaybind, bindable] VARIANT_BOOL msPlayToDisabled ();
    [propput, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] void msPlayToPrimary (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] VARIANT_BOOL msPlayToPrimary ();
  };
  [noncreatable, uuid (3051070e-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLAudioElement {
    [default] dispinterface DispHTMLAudioElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLMediaElement;
    interface IHTMLMediaElement2;
    interface IHTMLMSMediaElement;
    interface IHTMLAudioElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CAudioElement;")
  [noncreatable, uuid (305107ec-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLAudioElementFactory {
    [default] interface IHTMLAudioElementFactory;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CAudioElementFactory;")
  [hidden, uuid (3059008b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLVideoElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_ERROR)] IHTMLMediaError *error ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_SRC), displaybind, bindable] void src (BSTR v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SRC), displaybind, bindable] BSTR src ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CURRENTSRC), displaybind, bindable] BSTR currentSrc ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_NETWORKSTATE), displaybind, bindable] USHORT networkState ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_PRELOAD), displaybind, bindable] void preload (BSTR v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PRELOAD), displaybind, bindable] BSTR preload ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_BUFFERED), displaybind, bindable] IHTMLTimeRanges *buffered ();
    [id (DISPID_IHTMLMEDIAELEMENT_LOAD)] void load ();
    [id (DISPID_IHTMLMEDIAELEMENT_CANPLAYTYPE)] BSTR canPlayType ([in] BSTR type);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SEEKING), displaybind, bindable] VARIANT_BOOL seeking ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_CURRENTTIME), displaybind, bindable] void currentTime (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CURRENTTIME), displaybind, bindable] float currentTime ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_INITIALTIME), displaybind, bindable] float initialTime ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_DURATION), displaybind, bindable] float duration ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PAUSED), displaybind, bindable] VARIANT_BOOL paused ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_DEFAULTPLAYBACKRATE), displaybind, bindable] void defaultPlaybackRate (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_DEFAULTPLAYBACKRATE), displaybind, bindable] float defaultPlaybackRate ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_PLAYBACKRATE), displaybind, bindable] void playbackRate (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PLAYBACKRATE), displaybind, bindable] float playbackRate ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PLAYED), displaybind, bindable] IHTMLTimeRanges *played ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SEEKABLE), displaybind, bindable] IHTMLTimeRanges *seekable ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_ENDED), displaybind, bindable] VARIANT_BOOL ended ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_AUTOPLAY), displaybind, bindable] void autoplay (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_AUTOPLAY), displaybind, bindable] VARIANT_BOOL autoplay ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_LOOP), displaybind, bindable] void loop (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_LOOP), displaybind, bindable] VARIANT_BOOL loop ();
    [id (DISPID_IHTMLMEDIAELEMENT_PLAY)] void play ();
    [id (DISPID_IHTMLMEDIAELEMENT_PAUSE)] void pause ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_CONTROLS), displaybind, bindable] void controls (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CONTROLS), displaybind, bindable] VARIANT_BOOL controls ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_VOLUME), displaybind, bindable] void volume (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_VOLUME), displaybind, bindable] float volume ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_MUTED), displaybind, bindable] void muted (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_MUTED), displaybind, bindable] VARIANT_BOOL muted ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_AUTOBUFFER), displaybind, bindable] void autobuffer (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_AUTOBUFFER), displaybind, bindable] VARIANT_BOOL autobuffer ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_CURRENTTIMEDOUBLE), displaybind, bindable] void currentTimeDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_CURRENTTIMEDOUBLE), displaybind, bindable] double currentTimeDouble ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_INITIALTIMEDOUBLE), displaybind, bindable] double initialTimeDouble ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_DURATIONDOUBLE), displaybind, bindable] double durationDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_DEFAULTPLAYBACKRATEDOUBLE), displaybind, bindable] void defaultPlaybackRateDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_DEFAULTPLAYBACKRATEDOUBLE), displaybind, bindable] double defaultPlaybackRateDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_PLAYBACKRATEDOUBLE), displaybind, bindable] void playbackRateDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_PLAYBACKRATEDOUBLE), displaybind, bindable] double playbackRateDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_VOLUMEDOUBLE), displaybind, bindable] void volumeDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_VOLUMEDOUBLE), displaybind, bindable] double volumeDouble ();
    [propput, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTODISABLED), displaybind, bindable] void msPlayToDisabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTODISABLED), displaybind, bindable] VARIANT_BOOL msPlayToDisabled ();
    [propput, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] void msPlayToPrimary (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] VARIANT_BOOL msPlayToPrimary ();
    [propput, id (DISPID_IHTMLVIDEOELEMENT_WIDTH), displaybind, bindable] void width (long v);
    [propget, id (DISPID_IHTMLVIDEOELEMENT_WIDTH), displaybind, bindable] long width ();
    [propput, id (DISPID_IHTMLVIDEOELEMENT_HEIGHT), displaybind, bindable] void height (long v);
    [propget, id (DISPID_IHTMLVIDEOELEMENT_HEIGHT), displaybind, bindable] long height ();
    [propget, id (DISPID_IHTMLVIDEOELEMENT_VIDEOWIDTH), displaybind, bindable] ULONG videoWidth ();
    [propget, id (DISPID_IHTMLVIDEOELEMENT_VIDEOHEIGHT), displaybind, bindable] ULONG videoHeight ();
    [propput, id (DISPID_IHTMLVIDEOELEMENT_POSTER), displaybind, bindable] void poster (BSTR v);
    [propget, id (DISPID_IHTMLVIDEOELEMENT_POSTER), displaybind, bindable] BSTR poster ();
  };
  [noncreatable, uuid (3051070f-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLVideoElement {
    [default] dispinterface DispHTMLVideoElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLMediaElement;
    interface IHTMLMediaElement2;
    interface IHTMLMSMediaElement;
    interface IHTMLVideoElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CVideoElement;")
  [odl, oleautomation, dual, uuid (305104f1-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGSwitchElement : IDispatch {
  };
  [hidden, uuid (30590030-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGSwitchElement {
    properties:
    methods:
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] void xmllang (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] BSTR xmllang ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] void xmlspace (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] BSTR xmlspace ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] ISVGElement *nearestViewportElement ();
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] ISVGElement *farthestViewportElement ();
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] ISVGRect *getBBox ();
    [id (DISPID_ISVGLOCATABLE_GETCTM)] ISVGMatrix *getCTM ();
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] ISVGMatrix *getScreenCTM ();
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] ISVGMatrix *getTransformToElement ([in] ISVGElement *pElement);
  };
  [noncreatable, uuid (305105d8-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGSwitchElement {
    [default] dispinterface DispSVGSwitchElement;
    interface ISVGSwitchElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGTransformable;
    interface ISVGLocatable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGSwitchElement;")
  [odl, oleautomation, dual, uuid (305104ea-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGDescElement : IDispatch {
  };
  [hidden, uuid (30590005-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGDescElement {
    properties:
    methods:
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
  };
  [noncreatable, uuid (30510572-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGDescElement {
    [default] dispinterface DispSVGDescElement;
    interface ISVGDescElement;
    interface ISVGElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGDescElement;")
  [odl, oleautomation, dual, uuid (305104eb-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGTitleElement : IDispatch {
  };
  [hidden, uuid (30590006-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGTitleElement {
    properties:
    methods:
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
  };
  [noncreatable, uuid (30510573-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGTitleElement {
    [default] dispinterface DispSVGTitleElement;
    interface ISVGTitleElement;
    interface ISVGElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGTitleElement;")
  [odl, oleautomation, dual, uuid (30510560-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGMetadataElement : IDispatch {
  };
  [hidden, uuid (3059002f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGMetadataElement {
    properties:
    methods:
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
  };
  [noncreatable, uuid (305105d7-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGMetadataElement {
    [default] dispinterface DispSVGMetadataElement;
    interface ISVGMetadataElement;
    interface ISVGElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGMetadataElement;")
  interface ISVGElement;
  interface ISVGUseElement;
  interface ISVGElementInstanceList;
  [odl, oleautomation, dual, uuid (305104ee-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGElementInstance : IDispatch {
    [propget, id (DISPID_ISVGELEMENTINSTANCE_CORRESPONDINGELEMENT)] HRESULT correspondingElement ([retval, out] ISVGElement **p);
    [propget, id (DISPID_ISVGELEMENTINSTANCE_CORRESPONDINGUSEELEMENT)] HRESULT correspondingUseElement ([retval, out] ISVGUseElement **p);
    [propget, id (DISPID_ISVGELEMENTINSTANCE_PARENTNODE)] HRESULT parentNode ([retval, out] ISVGElementInstance **p);
    [propget, id (DISPID_ISVGELEMENTINSTANCE_CHILDNODES)] HRESULT childNodes ([retval, out] ISVGElementInstanceList **p);
    [propget, id (DISPID_ISVGELEMENTINSTANCE_FIRSTCHILD)] HRESULT firstChild ([retval, out] ISVGElementInstance **p);
    [propget, id (DISPID_ISVGELEMENTINSTANCE_LASTCHILD)] HRESULT lastChild ([retval, out] ISVGElementInstance **p);
    [propget, id (DISPID_ISVGELEMENTINSTANCE_PREVIOUSSIBLING)] HRESULT previousSibling ([retval, out] ISVGElementInstance **p);
    [propget, id (DISPID_ISVGELEMENTINSTANCE_NEXTSIBLING)] HRESULT nextSibling ([retval, out] ISVGElementInstance **p);
  };
  [hidden, uuid (30590007-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGElementInstance {
    properties:
    methods:
    [propget, id (DISPID_ISVGELEMENTINSTANCE_CORRESPONDINGELEMENT)] ISVGElement *correspondingElement ();
    [propget, id (DISPID_ISVGELEMENTINSTANCE_CORRESPONDINGUSEELEMENT)] ISVGUseElement *correspondingUseElement ();
    [propget, id (DISPID_ISVGELEMENTINSTANCE_PARENTNODE)] ISVGElementInstance *parentNode ();
    [propget, id (DISPID_ISVGELEMENTINSTANCE_CHILDNODES)] ISVGElementInstanceList *childNodes ();
    [propget, id (DISPID_ISVGELEMENTINSTANCE_FIRSTCHILD)] ISVGElementInstance *firstChild ();
    [propget, id (DISPID_ISVGELEMENTINSTANCE_LASTCHILD)] ISVGElementInstance *lastChild ();
    [propget, id (DISPID_ISVGELEMENTINSTANCE_PREVIOUSSIBLING)] ISVGElementInstance *previousSibling ();
    [propget, id (DISPID_ISVGELEMENTINSTANCE_NEXTSIBLING)] ISVGElementInstance *nextSibling ();
    [id (DISPID_IEVENTTARGET_ADDEVENTLISTENER)] void addEventListener ([in] BSTR type,[in] IDispatch *listener,[in] VARIANT_BOOL useCapture);
    [id (DISPID_IEVENTTARGET_REMOVEEVENTLISTENER)] void removeEventListener ([in] BSTR type,[in] IDispatch *listener,[in] VARIANT_BOOL useCapture);
    [id (DISPID_IEVENTTARGET_DISPATCHEVENT)] VARIANT_BOOL dispatchEvent ([in] IDOMEvent *evt);
  };
  [noncreatable, uuid (30510575-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGElementInstance {
    [default] dispinterface DispSVGElementInstance;
    interface ISVGElementInstance;
    interface IEventTarget;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGElementInstance;")
  interface ISVGElementInstance;
  [odl, oleautomation, dual, uuid (305104ef-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGElementInstanceList : IDispatch {
    [propget, id (DISPID_ISVGELEMENTINSTANCELIST_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_ISVGELEMENTINSTANCELIST_ITEM)] HRESULT item ([in] long index,[retval, out] ISVGElementInstance **ppResult);
  };
  [hidden, uuid (30590008-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGElementInstanceList {
    properties:
    methods:
    [propget, id (DISPID_ISVGELEMENTINSTANCELIST_LENGTH)] long length ();
    [id (DISPID_ISVGELEMENTINSTANCELIST_ITEM)] ISVGElementInstance *item ([in] long index);
  };
  [noncreatable, uuid (30510576-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGElementInstanceList {
    [default] dispinterface DispSVGElementInstanceList;
    interface ISVGElementInstanceList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGElementInstanceList;")
  [odl, oleautomation, dual, uuid (3051072b-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMException : IDispatch {
    [propput, id (DISPID_IDOMEXCEPTION_CODE)] HRESULT code ([in] long v);
    [propget, id (DISPID_IDOMEXCEPTION_CODE)] HRESULT code ([retval, out] long *p);
    [propget, id (DISPID_IDOMEXCEPTION_MESSAGE)] HRESULT message ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3051072d-98b5-11cf-bb82-00aa00bdce0b)] interface IRangeException : IDispatch {
    [propput, id (DISPID_IRANGEEXCEPTION_CODE)] HRESULT code ([in] long v);
    [propget, id (DISPID_IRANGEEXCEPTION_CODE)] HRESULT code ([retval, out] long *p);
    [propget, id (DISPID_IRANGEEXCEPTION_MESSAGE)] HRESULT message ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3051072f-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGException : IDispatch {
    [propput, id (DISPID_ISVGEXCEPTION_CODE)] HRESULT code ([in] long v);
    [propget, id (DISPID_ISVGEXCEPTION_CODE)] HRESULT code ([retval, out] long *p);
    [propget, id (DISPID_ISVGEXCEPTION_MESSAGE)] HRESULT message ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3051073a-98b5-11cf-bb82-00aa00bdce0b)] interface IEventException : IDispatch {
    [propput, id (DISPID_IEVENTEXCEPTION_CODE)] HRESULT code ([in] long v);
    [propget, id (DISPID_IEVENTEXCEPTION_CODE)] HRESULT code ([retval, out] long *p);
    [propget, id (DISPID_IEVENTEXCEPTION_MESSAGE)] HRESULT message ([retval, out] BSTR *p);
  };
  [hidden, uuid (30590094-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMException {
    properties:
    methods:
    [propput, id (DISPID_IDOMEXCEPTION_CODE)] void code (long v);
    [propget, id (DISPID_IDOMEXCEPTION_CODE)] long code ();
    [propget, id (DISPID_IDOMEXCEPTION_MESSAGE)] BSTR message ();
  };
  [noncreatable, uuid (3051072c-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMException {
    [default] dispinterface DispDOMException;
    interface IDOMException;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMException;")
  [hidden, uuid (30590095-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispRangeException {
    properties:
    methods:
    [propput, id (DISPID_IRANGEEXCEPTION_CODE)] void code (long v);
    [propget, id (DISPID_IRANGEEXCEPTION_CODE)] long code ();
    [propget, id (DISPID_IRANGEEXCEPTION_MESSAGE)] BSTR message ();
  };
  [noncreatable, uuid (3051072e-98b5-11cf-bb82-00aa00bdce0b)] coclass RangeException {
    [default] dispinterface DispRangeException;
    interface IRangeException;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CRangeException;")
  [hidden, uuid (30590096-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGException {
    properties:
    methods:
    [propput, id (DISPID_ISVGEXCEPTION_CODE)] void code (long v);
    [propget, id (DISPID_ISVGEXCEPTION_CODE)] long code ();
    [propget, id (DISPID_ISVGEXCEPTION_MESSAGE)] BSTR message ();
  };
  [noncreatable, uuid (30510730-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGException {
    [default] dispinterface DispSVGException;
    interface ISVGException;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGException;")
  [hidden, uuid (30590099-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispEventException {
    properties:
    methods:
  };
  [noncreatable, uuid (3051073b-98b5-11cf-bb82-00aa00bdce0b)] coclass EventException {
    [default] dispinterface DispEventException;
    interface IEventException;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CEventException;")
  [odl, oleautomation, dual, uuid (3051054d-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGScriptElement : IDispatch {
    [propput, id (DISPID_ISVGSCRIPTELEMENT_TYPE)] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_ISVGSCRIPTELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
  };
  [hidden, uuid (30590039-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGScriptElement {
    properties:
    methods:
    [propput, id (DISPID_ISVGSCRIPTELEMENT_TYPE)] void type (BSTR v);
    [propget, id (DISPID_ISVGSCRIPTELEMENT_TYPE)] BSTR type ();
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
  };
  [noncreatable, uuid (305105e1-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGScriptElement {
    [default] dispinterface DispSVGScriptElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGScriptElement;
    interface ISVGURIReference;
    interface ISVGExternalResourcesRequired;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGScriptElement;")
  [odl, oleautomation, dual, uuid (305104f3-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGStyleElement : IDispatch {
    [propput, id (DISPID_ISVGSTYLEELEMENT_TYPE)] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_ISVGSTYLEELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_ISVGSTYLEELEMENT_MEDIA)] HRESULT media ([in] BSTR v);
    [propget, id (DISPID_ISVGSTYLEELEMENT_MEDIA)] HRESULT media ([retval, out] BSTR *p);
  };
  [hidden, uuid (30590029-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGStyleElement {
    properties:
    methods:
    [propput, id (DISPID_ISVGSTYLEELEMENT_TYPE)] void type (BSTR v);
    [propget, id (DISPID_ISVGSTYLEELEMENT_TYPE)] BSTR type ();
    [propput, id (DISPID_ISVGSTYLEELEMENT_MEDIA)] void media (BSTR v);
    [propget, id (DISPID_ISVGSTYLEELEMENT_MEDIA)] BSTR media ();
  };
  [noncreatable, uuid (305105d1-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGStyleElement {
    [default] dispinterface DispSVGStyleElement;
    interface ISVGStyleElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGStyleElement;")
  typedef enum _lengthAdjust {
    LENGTHADJUST_UNKNOWN = 0,
    LENGTHADJUST_SPACING = 1,
    LENGTHADJUST_SPACINGANDGLYPHS = 2,
    lengthAdjust_Max = 0x7FFFFFFF
  } lengthAdjust;
  [odl, oleautomation, dual, uuid (3051051a-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGTextContentElement : IDispatch {
    [propputref, id (DISPID_ISVGTEXTCONTENTELEMENT_TEXTLENGTH)] HRESULT textLength ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGTEXTCONTENTELEMENT_TEXTLENGTH)] HRESULT textLength ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)] HRESULT lengthAdjust ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)] HRESULT lengthAdjust ([retval, out] ISVGAnimatedEnumeration **p);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETNUMBEROFCHARS)] HRESULT getNumberOfChars ([retval, out] long *pResult);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETCOMPUTEDTEXTLENGTH)] HRESULT getComputedTextLength ([retval, out] float *pResult);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETSUBSTRINGLENGTH)] HRESULT getSubStringLength ([in] long charnum,[in] long nchars,[retval, out] float *pResult);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETSTARTPOSITIONOFCHAR)] HRESULT getStartPositionOfChar ([in] long charnum,[retval, out] ISVGPoint **ppResult);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETENDPOSITIONOFCHAR)] HRESULT getEndPositionOfChar ([in] long charnum,[retval, out] ISVGPoint **ppResult);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETEXTENTOFCHAR)] HRESULT getExtentOfChar ([in] long charnum,[retval, out] ISVGRect **ppResult);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETROTATIONOFCHAR)] HRESULT getRotationOfChar ([in] long charnum,[retval, out] float *pResult);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETCHARNUMATPOSITION)] HRESULT getCharNumAtPosition ([in] ISVGPoint *point,[retval, out] long *pResult);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_SELECTSUBSTRING)] HRESULT selectSubString ([in] long charnum,[in] long nchars);
  };
  [hidden, uuid (30590035-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGTextContentElement {
    properties:
    methods:
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propputref, id (DISPID_ISVGTEXTCONTENTELEMENT_TEXTLENGTH)] void textLength (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGTEXTCONTENTELEMENT_TEXTLENGTH)] ISVGAnimatedLength *textLength ();
    [propputref, id (DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)] void lengthAdjust (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)] ISVGAnimatedEnumeration *lengthAdjust ();
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETNUMBEROFCHARS)] long getNumberOfChars ();
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETCOMPUTEDTEXTLENGTH)] float getComputedTextLength ();
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETSUBSTRINGLENGTH)] float getSubStringLength ([in] long charnum,[in] long nchars);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETSTARTPOSITIONOFCHAR)] ISVGPoint *getStartPositionOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETENDPOSITIONOFCHAR)] ISVGPoint *getEndPositionOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETEXTENTOFCHAR)] ISVGRect *getExtentOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETROTATIONOFCHAR)] float getRotationOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETCHARNUMATPOSITION)] long getCharNumAtPosition ([in] ISVGPoint *point);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_SELECTSUBSTRING)] void selectSubString ([in] long charnum,[in] long nchars);
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] void xmllang (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] BSTR xmllang ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] void xmlspace (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] BSTR xmlspace ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [noncreatable, uuid (305105dd-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGTextContentElement {
    [default] dispinterface DispSVGTextContentElement;
    interface ISVGElement;
    interface ISVGTextContentElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGTextContentElement;")
  [odl, oleautomation, dual, uuid (3051051b-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGTextPositioningElement : IDispatch {
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_X)] HRESULT x ([in] ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_X)] HRESULT x ([retval, out] ISVGAnimatedLengthList **p);
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_Y)] HRESULT y ([in] ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_Y)] HRESULT y ([retval, out] ISVGAnimatedLengthList **p);
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DX)] HRESULT dx ([in] ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DX)] HRESULT dx ([retval, out] ISVGAnimatedLengthList **p);
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DY)] HRESULT dy ([in] ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DY)] HRESULT dy ([retval, out] ISVGAnimatedLengthList **p);
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_ROTATE)] HRESULT rotate ([in] ISVGAnimatedNumberList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_ROTATE)] HRESULT rotate ([retval, out] ISVGAnimatedNumberList **p);
  };
  [hidden, uuid (30590038-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGTextPositioningElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_X)] void x (ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_X)] ISVGAnimatedLengthList *x ();
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_Y)] void y (ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_Y)] ISVGAnimatedLengthList *y ();
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DX)] void dx (ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DX)] ISVGAnimatedLengthList *dx ();
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DY)] void dy (ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DY)] ISVGAnimatedLengthList *dy ();
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_ROTATE)] void rotate (ISVGAnimatedNumberList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_ROTATE)] ISVGAnimatedNumberList *rotate ();
    [propputref, id (DISPID_ISVGTEXTCONTENTELEMENT_TEXTLENGTH)] void textLength (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGTEXTCONTENTELEMENT_TEXTLENGTH)] ISVGAnimatedLength *textLength ();
    [propputref, id (DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)] void lengthAdjust (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)] ISVGAnimatedEnumeration *lengthAdjust ();
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETNUMBEROFCHARS)] long getNumberOfChars ();
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETCOMPUTEDTEXTLENGTH)] float getComputedTextLength ();
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETSUBSTRINGLENGTH)] float getSubStringLength ([in] long charnum,[in] long nchars);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETSTARTPOSITIONOFCHAR)] ISVGPoint *getStartPositionOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETENDPOSITIONOFCHAR)] ISVGPoint *getEndPositionOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETEXTENTOFCHAR)] ISVGRect *getExtentOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETROTATIONOFCHAR)] float getRotationOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETCHARNUMATPOSITION)] long getCharNumAtPosition ([in] ISVGPoint *point);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_SELECTSUBSTRING)] void selectSubString ([in] long charnum,[in] long nchars);
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] void xmllang (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] BSTR xmllang ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] void xmlspace (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] BSTR xmlspace ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [noncreatable, uuid (305105e0-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGTextPositioningElement {
    [default] dispinterface DispSVGTextPositioningElement;
    interface ISVGTextPositioningElement;
    interface ISVGTextContentElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGTextPositioningElement;")
  [odl, oleautomation, dual, uuid (30510738-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMDocumentType : IDispatch {
    [propget, id (DISPID_IDOMDOCUMENTTYPE_NAME)] HRESULT name ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMDOCUMENTTYPE_ENTITIES)] HRESULT entities ([retval, out] IDispatch **p);
    [propget, id (DISPID_IDOMDOCUMENTTYPE_NOTATIONS)] HRESULT notations ([retval, out] IDispatch **p);
    [propget, id (DISPID_IDOMDOCUMENTTYPE_PUBLICID)] HRESULT publicId ([retval, out] VARIANT *p);
    [propget, id (DISPID_IDOMDOCUMENTTYPE_SYSTEMID)] HRESULT systemId ([retval, out] VARIANT *p);
    [propget, id (DISPID_IDOMDOCUMENTTYPE_INTERNALSUBSET)] HRESULT internalSubset ([retval, out] VARIANT *p);
  };
  [hidden, uuid (30590098-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMDocumentType {
    properties:
    methods:
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propget, id (DISPID_IDOMDOCUMENTTYPE_NAME)] BSTR name ();
    [propget, id (DISPID_IDOMDOCUMENTTYPE_ENTITIES)] IDispatch *entities ();
    [propget, id (DISPID_IDOMDOCUMENTTYPE_NOTATIONS)] IDispatch *notations ();
    [propget, id (DISPID_IDOMDOCUMENTTYPE_PUBLICID)] VARIANT publicId ();
    [propget, id (DISPID_IDOMDOCUMENTTYPE_SYSTEMID)] VARIANT systemId ();
    [propget, id (DISPID_IDOMDOCUMENTTYPE_INTERNALSUBSET)] VARIANT internalSubset ();
  };
  [noncreatable, uuid (30510739-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMDocumentType {
    [default] dispinterface DispDOMDocumentType;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IDOMDocumentType;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDocumentType;")
  [odl, oleautomation, dual, uuid (30510746-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMNodeIterator : IDispatch {
    [propget, id (DISPID_IDOMNODEITERATOR_ROOT)] HRESULT root ([retval, out] IDispatch **p);
    [propget, id (DISPID_IDOMNODEITERATOR_WHATTOSHOW)] HRESULT whatToShow ([retval, out] ULONG *p);
    [propget, id (DISPID_IDOMNODEITERATOR_FILTER)] HRESULT filter ([retval, out] IDispatch **p);
    [propget, id (DISPID_IDOMNODEITERATOR_EXPANDENTITYREFERENCES)] HRESULT expandEntityReferences ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IDOMNODEITERATOR_NEXTNODE)] HRESULT nextNode ([retval, out] IDispatch **ppRetNode);
    [id (DISPID_IDOMNODEITERATOR_PREVIOUSNODE)] HRESULT previousNode ([retval, out] IDispatch **ppRetNode);
    [id (DISPID_IDOMNODEITERATOR_DETACH)] HRESULT detach ();
  };
  [odl, oleautomation, dual, uuid (30510748-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMTreeWalker : IDispatch {
    [propget, id (DISPID_IDOMTREEWALKER_ROOT)] HRESULT root ([retval, out] IDispatch **p);
    [propget, id (DISPID_IDOMTREEWALKER_WHATTOSHOW)] HRESULT whatToShow ([retval, out] ULONG *p);
    [propget, id (DISPID_IDOMTREEWALKER_FILTER)] HRESULT filter ([retval, out] IDispatch **p);
    [propget, id (DISPID_IDOMTREEWALKER_EXPANDENTITYREFERENCES)] HRESULT expandEntityReferences ([retval, out] VARIANT_BOOL *p);
    [propputref, id (DISPID_IDOMTREEWALKER_CURRENTNODE)] HRESULT currentNode ([in] IDispatch *v);
    [propget, id (DISPID_IDOMTREEWALKER_CURRENTNODE)] HRESULT currentNode ([retval, out] IDispatch **p);
    [id (DISPID_IDOMTREEWALKER_PARENTNODE)] HRESULT parentNode ([retval, out] IDispatch **ppRetNode);
    [id (DISPID_IDOMTREEWALKER_FIRSTCHILD)] HRESULT firstChild ([retval, out] IDispatch **ppRetNode);
    [id (DISPID_IDOMTREEWALKER_LASTCHILD)] HRESULT lastChild ([retval, out] IDispatch **ppRetNode);
    [id (DISPID_IDOMTREEWALKER_PREVIOUSSIBLING)] HRESULT previousSibling ([retval, out] IDispatch **ppRetNode);
    [id (DISPID_IDOMTREEWALKER_NEXTSIBLING)] HRESULT nextSibling ([retval, out] IDispatch **ppRetNode);
    [id (DISPID_IDOMTREEWALKER_PREVIOUSNODE)] HRESULT previousNode ([retval, out] IDispatch **ppRetNode);
    [id (DISPID_IDOMTREEWALKER_NEXTNODE)] HRESULT nextNode ([retval, out] IDispatch **ppRetNode);
  };
  [hidden, uuid (3059009c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispNodeIterator {
    properties:
    methods:
    [propget, id (DISPID_IDOMNODEITERATOR_ROOT)] IDispatch *root ();
    [propget, id (DISPID_IDOMNODEITERATOR_WHATTOSHOW)] ULONG whatToShow ();
    [propget, id (DISPID_IDOMNODEITERATOR_FILTER)] IDispatch *filter ();
    [propget, id (DISPID_IDOMNODEITERATOR_EXPANDENTITYREFERENCES)] VARIANT_BOOL expandEntityReferences ();
    [id (DISPID_IDOMNODEITERATOR_NEXTNODE)] IDispatch *nextNode ();
    [id (DISPID_IDOMNODEITERATOR_PREVIOUSNODE)] IDispatch *previousNode ();
    [id (DISPID_IDOMNODEITERATOR_DETACH)] void detach ();
  };
  [noncreatable, uuid (30510745-98b5-11cf-bb82-00aa00bdce0b)] coclass NodeIterator {
    [default] dispinterface DispNodeIterator;
    interface IDOMNodeIterator;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTraversalNodeIterator;")
  [hidden, uuid (3059009d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispTreeWalker {
    properties:
    methods:
    [propget, id (DISPID_IDOMTREEWALKER_ROOT)] IDispatch *root ();
    [propget, id (DISPID_IDOMTREEWALKER_WHATTOSHOW)] ULONG whatToShow ();
    [propget, id (DISPID_IDOMTREEWALKER_FILTER)] IDispatch *filter ();
    [propget, id (DISPID_IDOMTREEWALKER_EXPANDENTITYREFERENCES)] VARIANT_BOOL expandEntityReferences ();
    [propputref, id (DISPID_IDOMTREEWALKER_CURRENTNODE)] void currentNode (IDispatch *v);
    [propget, id (DISPID_IDOMTREEWALKER_CURRENTNODE)] IDispatch *currentNode ();
    [id (DISPID_IDOMTREEWALKER_PARENTNODE)] IDispatch *parentNode ();
    [id (DISPID_IDOMTREEWALKER_FIRSTCHILD)] IDispatch *firstChild ();
    [id (DISPID_IDOMTREEWALKER_LASTCHILD)] IDispatch *lastChild ();
    [id (DISPID_IDOMTREEWALKER_PREVIOUSSIBLING)] IDispatch *previousSibling ();
    [id (DISPID_IDOMTREEWALKER_NEXTSIBLING)] IDispatch *nextSibling ();
    [id (DISPID_IDOMTREEWALKER_PREVIOUSNODE)] IDispatch *previousNode ();
    [id (DISPID_IDOMTREEWALKER_NEXTNODE)] IDispatch *nextNode ();
  };
  [noncreatable, uuid (30510747-98b5-11cf-bb82-00aa00bdce0b)] coclass TreeWalker {
    [default] dispinterface DispTreeWalker;
    interface IDOMTreeWalker;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTraversalTreeWalker;")
  [odl, oleautomation, dual, uuid (30510742-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMProcessingInstruction : IDispatch {
    [propget, id (DISPID_IDOMPROCESSINGINSTRUCTION_TARGET)] HRESULT target ([retval, out] BSTR *p);
    [propput, id (DISPID_IDOMPROCESSINGINSTRUCTION_DATA)] HRESULT data ([in] BSTR v);
    [propget, id (DISPID_IDOMPROCESSINGINSTRUCTION_DATA)] HRESULT data ([retval, out] BSTR *p);
  };
  [hidden, uuid (3059009b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMProcessingInstruction {
    properties:
    methods:
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propget, id (DISPID_IDOMPROCESSINGINSTRUCTION_TARGET)] BSTR target ();
    [propput, id (DISPID_IDOMPROCESSINGINSTRUCTION_DATA)] void data (BSTR v);
    [propget, id (DISPID_IDOMPROCESSINGINSTRUCTION_DATA)] BSTR data ();
  };
  [noncreatable, uuid (30510743-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMProcessingInstruction {
    [default] dispinterface DispDOMProcessingInstruction;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IDOMProcessingInstruction;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CProcessingInstruction;")
  interface IHTMLPerformance;
  interface IHTMLPerformanceNavigation;
  interface IHTMLPerformanceTiming;
  [odl, oleautomation, dual, uuid (3051074e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLPerformance : IDispatch {
    [propget, id (DISPID_IHTMLPERFORMANCE_NAVIGATION)] HRESULT navigation ([retval, out] IHTMLPerformanceNavigation **p);
    [propget, id (DISPID_IHTMLPERFORMANCE_TIMING)] HRESULT timing ([retval, out] IHTMLPerformanceTiming **p);
    [id (DISPID_IHTMLPERFORMANCE_TOSTRING)] HRESULT toString ([retval, out] BSTR *string);
    [id (DISPID_IHTMLPERFORMANCE_TOJSON)] HRESULT toJSON ([retval, out] VARIANT *pVar);
  };
  [odl, oleautomation, dual, uuid (30510750-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLPerformanceNavigation : IDispatch {
    [propget, id (DISPID_IHTMLPERFORMANCENAVIGATION_TYPE)] HRESULT type ([retval, out] ULONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCENAVIGATION_REDIRECTCOUNT)] HRESULT redirectCount ([retval, out] ULONG *p);
    [id (DISPID_IHTMLPERFORMANCENAVIGATION_TOSTRING)] HRESULT toString ([retval, out] BSTR *string);
    [id (DISPID_IHTMLPERFORMANCENAVIGATION_TOJSON)] HRESULT toJSON ([retval, out] VARIANT *pVar);
  };
  [odl, oleautomation, dual, uuid (30510752-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLPerformanceTiming : IDispatch {
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_NAVIGATIONSTART)] HRESULT navigationStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_UNLOADEVENTSTART)] HRESULT unloadEventStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_UNLOADEVENTEND)] HRESULT unloadEventEnd ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_REDIRECTSTART)] HRESULT redirectStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_REDIRECTEND)] HRESULT redirectEnd ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_FETCHSTART)] HRESULT fetchStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMAINLOOKUPSTART)] HRESULT domainLookupStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMAINLOOKUPEND)] HRESULT domainLookupEnd ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_CONNECTSTART)] HRESULT connectStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_CONNECTEND)] HRESULT connectEnd ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_REQUESTSTART)] HRESULT requestStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_RESPONSESTART)] HRESULT responseStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_RESPONSEEND)] HRESULT responseEnd ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMLOADING)] HRESULT domLoading ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMINTERACTIVE)] HRESULT domInteractive ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMCONTENTLOADEDEVENTSTART)] HRESULT domContentLoadedEventStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMCONTENTLOADEDEVENTEND)] HRESULT domContentLoadedEventEnd ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMCOMPLETE)] HRESULT domComplete ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_LOADEVENTSTART)] HRESULT loadEventStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_LOADEVENTEND)] HRESULT loadEventEnd ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_MSFIRSTPAINT)] HRESULT msFirstPaint ([retval, out] ULONGLONG *p);
    [id (DISPID_IHTMLPERFORMANCETIMING_TOSTRING)] HRESULT toString ([retval, out] BSTR *string);
    [id (DISPID_IHTMLPERFORMANCETIMING_TOJSON)] HRESULT toJSON ([retval, out] VARIANT *pVar);
  };
  [hidden, uuid (3059009f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLPerformance {
    properties:
    methods:
    [propget, id (DISPID_IHTMLPERFORMANCE_NAVIGATION)] IHTMLPerformanceNavigation *navigation ();
    [propget, id (DISPID_IHTMLPERFORMANCE_TIMING)] IHTMLPerformanceTiming *timing ();
    [id (DISPID_IHTMLPERFORMANCE_TOSTRING)] BSTR toString ();
    [id (DISPID_IHTMLPERFORMANCE_TOJSON)] VARIANT toJSON ();
  };
  [noncreatable, uuid (3051074f-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLPerformance {
    [default] dispinterface DispHTMLPerformance;
    interface IHTMLPerformance;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMSPerformance;")
  [hidden, uuid (305900a0-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLPerformanceNavigation {
    properties:
    methods:
    [propget, id (DISPID_IHTMLPERFORMANCENAVIGATION_TYPE)] ULONG type ();
    [propget, id (DISPID_IHTMLPERFORMANCENAVIGATION_REDIRECTCOUNT)] ULONG redirectCount ();
    [id (DISPID_IHTMLPERFORMANCENAVIGATION_TOSTRING)] BSTR toString ();
    [id (DISPID_IHTMLPERFORMANCENAVIGATION_TOJSON)] VARIANT toJSON ();
  };
  [noncreatable, uuid (30510751-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLPerformanceNavigation {
    [default] dispinterface DispHTMLPerformanceNavigation;
    interface IHTMLPerformanceNavigation;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMSPerformanceNavigation;")
  [hidden, uuid (305900a1-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLPerformanceTiming {
    properties:
    methods:
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_NAVIGATIONSTART)] ULONGLONG navigationStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_UNLOADEVENTSTART)] ULONGLONG unloadEventStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_UNLOADEVENTEND)] ULONGLONG unloadEventEnd ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_REDIRECTSTART)] ULONGLONG redirectStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_REDIRECTEND)] ULONGLONG redirectEnd ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_FETCHSTART)] ULONGLONG fetchStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMAINLOOKUPSTART)] ULONGLONG domainLookupStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMAINLOOKUPEND)] ULONGLONG domainLookupEnd ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_CONNECTSTART)] ULONGLONG connectStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_CONNECTEND)] ULONGLONG connectEnd ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_REQUESTSTART)] ULONGLONG requestStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_RESPONSESTART)] ULONGLONG responseStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_RESPONSEEND)] ULONGLONG responseEnd ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMLOADING)] ULONGLONG domLoading ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMINTERACTIVE)] ULONGLONG domInteractive ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMCONTENTLOADEDEVENTSTART)] ULONGLONG domContentLoadedEventStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMCONTENTLOADEDEVENTEND)] ULONGLONG domContentLoadedEventEnd ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMCOMPLETE)] ULONGLONG domComplete ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_LOADEVENTSTART)] ULONGLONG loadEventStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_LOADEVENTEND)] ULONGLONG loadEventEnd ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_MSFIRSTPAINT)] ULONGLONG msFirstPaint ();
    [id (DISPID_IHTMLPERFORMANCETIMING_TOSTRING)] BSTR toString ();
    [id (DISPID_IHTMLPERFORMANCETIMING_TOJSON)] VARIANT toJSON ();
  };
  [noncreatable, uuid (30510753-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLPerformanceTiming {
    [default] dispinterface DispHTMLPerformanceTiming;
    interface IHTMLPerformanceTiming;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMSPerformanceTiming;")
  [odl, oleautomation, dual, uuid (3051051d-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGTSpanElement : IDispatch {
  };
  [hidden, uuid (3059003a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGTSpanElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_X)] void x (ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_X)] ISVGAnimatedLengthList *x ();
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_Y)] void y (ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_Y)] ISVGAnimatedLengthList *y ();
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DX)] void dx (ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DX)] ISVGAnimatedLengthList *dx ();
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DY)] void dy (ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DY)] ISVGAnimatedLengthList *dy ();
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_ROTATE)] void rotate (ISVGAnimatedNumberList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_ROTATE)] ISVGAnimatedNumberList *rotate ();
    [propputref, id (DISPID_ISVGTEXTCONTENTELEMENT_TEXTLENGTH)] void textLength (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGTEXTCONTENTELEMENT_TEXTLENGTH)] ISVGAnimatedLength *textLength ();
    [propputref, id (DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)] void lengthAdjust (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)] ISVGAnimatedEnumeration *lengthAdjust ();
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETNUMBEROFCHARS)] long getNumberOfChars ();
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETCOMPUTEDTEXTLENGTH)] float getComputedTextLength ();
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETSUBSTRINGLENGTH)] float getSubStringLength ([in] long charnum,[in] long nchars);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETSTARTPOSITIONOFCHAR)] ISVGPoint *getStartPositionOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETENDPOSITIONOFCHAR)] ISVGPoint *getEndPositionOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETEXTENTOFCHAR)] ISVGRect *getExtentOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETROTATIONOFCHAR)] float getRotationOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETCHARNUMATPOSITION)] long getCharNumAtPosition ([in] ISVGPoint *point);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_SELECTSUBSTRING)] void selectSubString ([in] long charnum,[in] long nchars);
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] void xmllang (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] BSTR xmllang ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] void xmlspace (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] BSTR xmlspace ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [noncreatable, uuid (305105e2-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGTSpanElement {
    [default] dispinterface DispSVGTSpanElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGTSpanElement;
    interface ISVGTextPositioningElement;
    interface ISVGTextContentElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGTSpanElement;")
  [odl, oleautomation, dual, uuid (3050f6b4-98b5-11cf-bb82-00aa00bdce0b)] interface ITemplatePrinter : IDispatch {
    [id (DISPID_ITEMPLATEPRINTER_STARTDOC)] HRESULT startDoc ([in] BSTR bstrTitle,[retval, out] VARIANT_BOOL *p);
    [id (DISPID_ITEMPLATEPRINTER_STOPDOC)] HRESULT stopDoc ();
    [id (DISPID_ITEMPLATEPRINTER_PRINTBLANKPAGE)] HRESULT printBlankPage ();
    [id (DISPID_ITEMPLATEPRINTER_PRINTPAGE)] HRESULT printPage ([in] IDispatch *pElemDisp);
    [id (DISPID_ITEMPLATEPRINTER_ENSUREPRINTDIALOGDEFAULTS)] HRESULT ensurePrintDialogDefaults ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_ITEMPLATEPRINTER_SHOWPRINTDIALOG)] HRESULT showPrintDialog ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_ITEMPLATEPRINTER_SHOWPAGESETUPDIALOG)] HRESULT showPageSetupDialog ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_ITEMPLATEPRINTER_PRINTNONNATIVE)] HRESULT printNonNative ([in] IUnknown *pMarkup,[retval, out] VARIANT_BOOL *p);
    [id (DISPID_ITEMPLATEPRINTER_PRINTNONNATIVEFRAMES)] HRESULT printNonNativeFrames ([in] IUnknown *pMarkup,[in] VARIANT_BOOL fActiveFrame);
    [propput, id (DISPID_ITEMPLATEPRINTER_FRAMESETDOCUMENT)] HRESULT framesetDocument ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_FRAMESETDOCUMENT)] HRESULT framesetDocument ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_FRAMEACTIVE)] HRESULT frameActive ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_FRAMEACTIVE)] HRESULT frameActive ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_FRAMEASSHOWN)] HRESULT frameAsShown ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_FRAMEASSHOWN)] HRESULT frameAsShown ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_SELECTION)] HRESULT selection ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_SELECTION)] HRESULT selection ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_SELECTEDPAGES)] HRESULT selectedPages ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_SELECTEDPAGES)] HRESULT selectedPages ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_CURRENTPAGE)] HRESULT currentPage ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_CURRENTPAGE)] HRESULT currentPage ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_CURRENTPAGEAVAIL)] HRESULT currentPageAvail ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_CURRENTPAGEAVAIL)] HRESULT currentPageAvail ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_COLLATE)] HRESULT collate ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_COLLATE)] HRESULT collate ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_ITEMPLATEPRINTER_DUPLEX)] HRESULT duplex ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_COPIES)] HRESULT copies ([in] USHORT v);
    [propget, id (DISPID_ITEMPLATEPRINTER_COPIES)] HRESULT copies ([retval, out] USHORT *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_PAGEFROM)] HRESULT pageFrom ([in] USHORT v);
    [propget, id (DISPID_ITEMPLATEPRINTER_PAGEFROM)] HRESULT pageFrom ([retval, out] USHORT *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_PAGETO)] HRESULT pageTo ([in] USHORT v);
    [propget, id (DISPID_ITEMPLATEPRINTER_PAGETO)] HRESULT pageTo ([retval, out] USHORT *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_TABLEOFLINKS)] HRESULT tableOfLinks ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_TABLEOFLINKS)] HRESULT tableOfLinks ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_ALLLINKEDDOCUMENTS)] HRESULT allLinkedDocuments ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_ALLLINKEDDOCUMENTS)] HRESULT allLinkedDocuments ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_HEADER)] HRESULT header ([in] BSTR v);
    [propget, id (DISPID_ITEMPLATEPRINTER_HEADER)] HRESULT header ([retval, out] BSTR *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_FOOTER)] HRESULT footer ([in] BSTR v);
    [propget, id (DISPID_ITEMPLATEPRINTER_FOOTER)] HRESULT footer ([retval, out] BSTR *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_MARGINLEFT)] HRESULT marginLeft ([in] long v);
    [propget, id (DISPID_ITEMPLATEPRINTER_MARGINLEFT)] HRESULT marginLeft ([retval, out] long *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_MARGINRIGHT)] HRESULT marginRight ([in] long v);
    [propget, id (DISPID_ITEMPLATEPRINTER_MARGINRIGHT)] HRESULT marginRight ([retval, out] long *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_MARGINTOP)] HRESULT marginTop ([in] long v);
    [propget, id (DISPID_ITEMPLATEPRINTER_MARGINTOP)] HRESULT marginTop ([retval, out] long *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_MARGINBOTTOM)] HRESULT marginBottom ([in] long v);
    [propget, id (DISPID_ITEMPLATEPRINTER_MARGINBOTTOM)] HRESULT marginBottom ([retval, out] long *p);
    [propget, id (DISPID_ITEMPLATEPRINTER_PAGEWIDTH)] HRESULT pageWidth ([retval, out] long *p);
    [propget, id (DISPID_ITEMPLATEPRINTER_PAGEHEIGHT)] HRESULT pageHeight ([retval, out] long *p);
    [propget, id (DISPID_ITEMPLATEPRINTER_UNPRINTABLELEFT)] HRESULT unprintableLeft ([retval, out] long *p);
    [propget, id (DISPID_ITEMPLATEPRINTER_UNPRINTABLETOP)] HRESULT unprintableTop ([retval, out] long *p);
    [propget, id (DISPID_ITEMPLATEPRINTER_UNPRINTABLERIGHT)] HRESULT unprintableRight ([retval, out] long *p);
    [propget, id (DISPID_ITEMPLATEPRINTER_UNPRINTABLEBOTTOM)] HRESULT unprintableBottom ([retval, out] long *p);
    [id (DISPID_ITEMPLATEPRINTER_UPDATEPAGESTATUS)] HRESULT updatePageStatus ([in] long *p);
  };
  [odl, oleautomation, dual, uuid (3050f83f-98b5-11cf-bb82-00aa00bdce0b)] interface ITemplatePrinter2 : ITemplatePrinter {
    [propput, id (DISPID_ITEMPLATEPRINTER2_SELECTIONENABLED)] HRESULT selectionEnabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER2_SELECTIONENABLED)] HRESULT selectionEnabled ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER2_FRAMEACTIVEENABLED)] HRESULT frameActiveEnabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER2_FRAMEACTIVEENABLED)] HRESULT frameActiveEnabled ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER2_ORIENTATION)] HRESULT orientation ([in] BSTR v);
    [propget, id (DISPID_ITEMPLATEPRINTER2_ORIENTATION)] HRESULT orientation ([retval, out] BSTR *p);
    [propput, id (DISPID_ITEMPLATEPRINTER2_USEPRINTERCOPYCOLLATE)] HRESULT usePrinterCopyCollate ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER2_USEPRINTERCOPYCOLLATE)] HRESULT usePrinterCopyCollate ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_ITEMPLATEPRINTER2_DEVICESUPPORTS)] HRESULT deviceSupports ([in] BSTR bstrProperty,[retval, out] VARIANT *pvar);
  };
  [odl, oleautomation, dual, uuid (305104a3-98b5-11cf-bb82-00aa00bdce0b)] interface ITemplatePrinter3 : ITemplatePrinter2 {
    [propput, id (DISPID_ITEMPLATEPRINTER3_HEADERFOOTERFONT)] HRESULT headerFooterFont ([in] BSTR v);
    [propget, id (DISPID_ITEMPLATEPRINTER3_HEADERFOOTERFONT)] HRESULT headerFooterFont ([retval, out] BSTR *p);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINTOP)] HRESULT getPageMarginTop ([in] IDispatch *pageRule,[in] long pageWidth,[in] long pageHeight,[retval, out] VARIANT *pMargin);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINRIGHT)] HRESULT getPageMarginRight ([in] IDispatch *pageRule,[in] long pageWidth,[in] long pageHeight,[retval, out] VARIANT *pMargin);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINBOTTOM)] HRESULT getPageMarginBottom ([in] IDispatch *pageRule,[in] long pageWidth,[in] long pageHeight,[retval, out] VARIANT *pMargin);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINLEFT)] HRESULT getPageMarginLeft ([in] IDispatch *pageRule,[in] long pageWidth,[in] long pageHeight,[retval, out] VARIANT *pMargin);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINTOPIMPORTANT)] HRESULT getPageMarginTopImportant ([in] IDispatch *pageRule,[retval, out] VARIANT_BOOL *pbImportant);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINRIGHTIMPORTANT)] HRESULT getPageMarginRightImportant ([in] IDispatch *pageRule,[retval, out] VARIANT_BOOL *pbImportant);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINBOTTOMIMPORTANT)] HRESULT getPageMarginBottomImportant ([in] IDispatch *pageRule,[retval, out] VARIANT_BOOL *pbImportant);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINLEFTIMPORTANT)] HRESULT getPageMarginLeftImportant ([in] IDispatch *pageRule,[retval, out] VARIANT_BOOL *pbImportant);
  };
  [odl, oleautomation, dual, uuid (f633be14-9eff-4c4d-929e-05717b21b3e6)] interface IPrintManagerTemplatePrinter : IDispatch {
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_STARTPRINT)] HRESULT startPrint ();
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_DRAWPREVIEWPAGE)] HRESULT drawPreviewPage ([in] IDispatch *pElemDisp,[in] long nPage);
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_SETPAGECOUNT)] HRESULT setPageCount ([in] long nPage);
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_INVALIDATEPREVIEW)] HRESULT invalidatePreview ();
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_GETPRINTTASKOPTIONVALUE)] HRESULT getPrintTaskOptionValue ([in] BSTR bstrKey,[retval, out] VARIANT *pvarin);
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_ENDPRINT)] HRESULT endPrint ();
  };
  [uuid (3050f6b3-98b5-11cf-bb82-00aa00bdce0b)] coclass CTemplatePrinter {
    [default] interface ITemplatePrinter3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTemplatePrinter;")
  [hidden, uuid (305900e9-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispCPrintManagerTemplatePrinter {
    properties:
    methods:
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_STARTPRINT)] void startPrint ();
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_DRAWPREVIEWPAGE)] void drawPreviewPage ([in] IDispatch *pElemDisp,[in] long nPage);
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_SETPAGECOUNT)] void setPageCount ([in] long nPage);
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_INVALIDATEPREVIEW)] void invalidatePreview ();
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_GETPRINTTASKOPTIONVALUE)] VARIANT getPrintTaskOptionValue ([in] BSTR bstrKey);
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_ENDPRINT)] void endPrint ();
    [id (DISPID_ITEMPLATEPRINTER_STARTDOC)] VARIANT_BOOL startDoc ([in] BSTR bstrTitle);
    [id (DISPID_ITEMPLATEPRINTER_STOPDOC)] void stopDoc ();
    [id (DISPID_ITEMPLATEPRINTER_PRINTBLANKPAGE)] void printBlankPage ();
    [id (DISPID_ITEMPLATEPRINTER_PRINTPAGE)] void printPage ([in] IDispatch *pElemDisp);
    [id (DISPID_ITEMPLATEPRINTER_ENSUREPRINTDIALOGDEFAULTS)] VARIANT_BOOL ensurePrintDialogDefaults ();
    [id (DISPID_ITEMPLATEPRINTER_SHOWPRINTDIALOG)] VARIANT_BOOL showPrintDialog ();
    [id (DISPID_ITEMPLATEPRINTER_SHOWPAGESETUPDIALOG)] VARIANT_BOOL showPageSetupDialog ();
    [id (DISPID_ITEMPLATEPRINTER_PRINTNONNATIVE)] VARIANT_BOOL printNonNative ([in] IUnknown *pMarkup);
    [id (DISPID_ITEMPLATEPRINTER_PRINTNONNATIVEFRAMES)] void printNonNativeFrames ([in] IUnknown *pMarkup,[in] VARIANT_BOOL fActiveFrame);
    [propput, id (DISPID_ITEMPLATEPRINTER_FRAMESETDOCUMENT)] void framesetDocument (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_FRAMESETDOCUMENT)] VARIANT_BOOL framesetDocument ();
    [propput, id (DISPID_ITEMPLATEPRINTER_FRAMEACTIVE)] void frameActive (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_FRAMEACTIVE)] VARIANT_BOOL frameActive ();
    [propput, id (DISPID_ITEMPLATEPRINTER_FRAMEASSHOWN)] void frameAsShown (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_FRAMEASSHOWN)] VARIANT_BOOL frameAsShown ();
    [propput, id (DISPID_ITEMPLATEPRINTER_SELECTION)] void selection (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_SELECTION)] VARIANT_BOOL selection ();
    [propput, id (DISPID_ITEMPLATEPRINTER_SELECTEDPAGES)] void selectedPages (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_SELECTEDPAGES)] VARIANT_BOOL selectedPages ();
    [propput, id (DISPID_ITEMPLATEPRINTER_CURRENTPAGE)] void currentPage (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_CURRENTPAGE)] VARIANT_BOOL currentPage ();
    [propput, id (DISPID_ITEMPLATEPRINTER_CURRENTPAGEAVAIL)] void currentPageAvail (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_CURRENTPAGEAVAIL)] VARIANT_BOOL currentPageAvail ();
    [propput, id (DISPID_ITEMPLATEPRINTER_COLLATE)] void collate (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_COLLATE)] VARIANT_BOOL collate ();
    [propget, id (DISPID_ITEMPLATEPRINTER_DUPLEX)] VARIANT_BOOL duplex ();
    [propput, id (DISPID_ITEMPLATEPRINTER_COPIES)] void copies (USHORT v);
    [propget, id (DISPID_ITEMPLATEPRINTER_COPIES)] USHORT copies ();
    [propput, id (DISPID_ITEMPLATEPRINTER_PAGEFROM)] void pageFrom (USHORT v);
    [propget, id (DISPID_ITEMPLATEPRINTER_PAGEFROM)] USHORT pageFrom ();
    [propput, id (DISPID_ITEMPLATEPRINTER_PAGETO)] void pageTo (USHORT v);
    [propget, id (DISPID_ITEMPLATEPRINTER_PAGETO)] USHORT pageTo ();
    [propput, id (DISPID_ITEMPLATEPRINTER_TABLEOFLINKS)] void tableOfLinks (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_TABLEOFLINKS)] VARIANT_BOOL tableOfLinks ();
    [propput, id (DISPID_ITEMPLATEPRINTER_ALLLINKEDDOCUMENTS)] void allLinkedDocuments (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_ALLLINKEDDOCUMENTS)] VARIANT_BOOL allLinkedDocuments ();
    [propput, id (DISPID_ITEMPLATEPRINTER_HEADER)] void header (BSTR v);
    [propget, id (DISPID_ITEMPLATEPRINTER_HEADER)] BSTR header ();
    [propput, id (DISPID_ITEMPLATEPRINTER_FOOTER)] void footer (BSTR v);
    [propget, id (DISPID_ITEMPLATEPRINTER_FOOTER)] BSTR footer ();
    [propput, id (DISPID_ITEMPLATEPRINTER_MARGINLEFT)] void marginLeft (long v);
    [propget, id (DISPID_ITEMPLATEPRINTER_MARGINLEFT)] long marginLeft ();
    [propput, id (DISPID_ITEMPLATEPRINTER_MARGINRIGHT)] void marginRight (long v);
    [propget, id (DISPID_ITEMPLATEPRINTER_MARGINRIGHT)] long marginRight ();
    [propput, id (DISPID_ITEMPLATEPRINTER_MARGINTOP)] void marginTop (long v);
    [propget, id (DISPID_ITEMPLATEPRINTER_MARGINTOP)] long marginTop ();
    [propput, id (DISPID_ITEMPLATEPRINTER_MARGINBOTTOM)] void marginBottom (long v);
    [propget, id (DISPID_ITEMPLATEPRINTER_MARGINBOTTOM)] long marginBottom ();
    [propget, id (DISPID_ITEMPLATEPRINTER_PAGEWIDTH)] long pageWidth ();
    [propget, id (DISPID_ITEMPLATEPRINTER_PAGEHEIGHT)] long pageHeight ();
    [propget, id (DISPID_ITEMPLATEPRINTER_UNPRINTABLELEFT)] long unprintableLeft ();
    [propget, id (DISPID_ITEMPLATEPRINTER_UNPRINTABLETOP)] long unprintableTop ();
    [propget, id (DISPID_ITEMPLATEPRINTER_UNPRINTABLERIGHT)] long unprintableRight ();
    [propget, id (DISPID_ITEMPLATEPRINTER_UNPRINTABLEBOTTOM)] long unprintableBottom ();
    [id (DISPID_ITEMPLATEPRINTER_UPDATEPAGESTATUS)] void updatePageStatus ([in] long *p);
    [propput, id (DISPID_ITEMPLATEPRINTER2_SELECTIONENABLED)] void selectionEnabled (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER2_SELECTIONENABLED)] VARIANT_BOOL selectionEnabled ();
    [propput, id (DISPID_ITEMPLATEPRINTER2_FRAMEACTIVEENABLED)] void frameActiveEnabled (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER2_FRAMEACTIVEENABLED)] VARIANT_BOOL frameActiveEnabled ();
    [propput, id (DISPID_ITEMPLATEPRINTER2_ORIENTATION)] void orientation (BSTR v);
    [propget, id (DISPID_ITEMPLATEPRINTER2_ORIENTATION)] BSTR orientation ();
    [propput, id (DISPID_ITEMPLATEPRINTER2_USEPRINTERCOPYCOLLATE)] void usePrinterCopyCollate (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER2_USEPRINTERCOPYCOLLATE)] VARIANT_BOOL usePrinterCopyCollate ();
    [id (DISPID_ITEMPLATEPRINTER2_DEVICESUPPORTS)] VARIANT deviceSupports ([in] BSTR bstrProperty);
    [propput, id (DISPID_ITEMPLATEPRINTER3_HEADERFOOTERFONT)] void headerFooterFont (BSTR v);
    [propget, id (DISPID_ITEMPLATEPRINTER3_HEADERFOOTERFONT)] BSTR headerFooterFont ();
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINTOP)] VARIANT getPageMarginTop ([in] IDispatch *pageRule,[in] long pageWidth,[in] long pageHeight);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINRIGHT)] VARIANT getPageMarginRight ([in] IDispatch *pageRule,[in] long pageWidth,[in] long pageHeight);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINBOTTOM)] VARIANT getPageMarginBottom ([in] IDispatch *pageRule,[in] long pageWidth,[in] long pageHeight);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINLEFT)] VARIANT getPageMarginLeft ([in] IDispatch *pageRule,[in] long pageWidth,[in] long pageHeight);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINTOPIMPORTANT)] VARIANT_BOOL getPageMarginTopImportant ([in] IDispatch *pageRule);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINRIGHTIMPORTANT)] VARIANT_BOOL getPageMarginRightImportant ([in] IDispatch *pageRule);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINBOTTOMIMPORTANT)] VARIANT_BOOL getPageMarginBottomImportant ([in] IDispatch *pageRule);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINLEFTIMPORTANT)] VARIANT_BOOL getPageMarginLeftImportant ([in] IDispatch *pageRule);
  };
  [noncreatable, uuid (63619f54-9d71-4c23-a08d-50d7f18db2e9)] coclass CPrintManagerTemplatePrinter {
    [default] dispinterface DispCPrintManagerTemplatePrinter;
    interface IPrintManagerTemplatePrinter;
    interface ITemplatePrinter3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CPrintManagerTemplatePrinter;")
  typedef enum _textpathMethodtype {
    TEXTPATH_METHODTYPE_UNKNOWN = 0,
    TEXTPATH_METHODTYPE_ALIGN = 1,
    TEXTPATH_METHODTYPE_STRETCH = 2,
    textpathMethodtype_Max = 0x7FFFFFFF
  } textpathMethodtype;

  typedef enum _textpathSpacingtype {
    TEXTPATH_SPACINGTYPE_UNKNOWN = 0,
    TEXTPATH_SPACINGTYPE_AUTO = 1,
    TEXTPATH_SPACINGTYPE_EXACT = 2,
    textpathSpacingtype_Max = 0x7FFFFFFF
  } textpathSpacingtype;
  [odl, oleautomation, dual, uuid (3051051f-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGTextPathElement : IDispatch {
    [propputref, id (DISPID_ISVGTEXTPATHELEMENT_STARTOFFSET)] HRESULT startOffset ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGTEXTPATHELEMENT_STARTOFFSET)] HRESULT startOffset ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGTEXTPATHELEMENT_METHOD)] HRESULT method ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGTEXTPATHELEMENT_METHOD)] HRESULT method ([retval, out] ISVGAnimatedEnumeration **p);
    [propputref, id (DISPID_ISVGTEXTPATHELEMENT_SPACING)] HRESULT spacing ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGTEXTPATHELEMENT_SPACING)] HRESULT spacing ([retval, out] ISVGAnimatedEnumeration **p);
  };
  [hidden, uuid (3059003d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGTextPathElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGTEXTPATHELEMENT_STARTOFFSET)] void startOffset (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGTEXTPATHELEMENT_STARTOFFSET)] ISVGAnimatedLength *startOffset ();
    [propputref, id (DISPID_ISVGTEXTPATHELEMENT_METHOD)] void method (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGTEXTPATHELEMENT_METHOD)] ISVGAnimatedEnumeration *method ();
    [propputref, id (DISPID_ISVGTEXTPATHELEMENT_SPACING)] void spacing (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGTEXTPATHELEMENT_SPACING)] ISVGAnimatedEnumeration *spacing ();
    [propputref, id (DISPID_ISVGTEXTCONTENTELEMENT_TEXTLENGTH)] void textLength (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGTEXTCONTENTELEMENT_TEXTLENGTH)] ISVGAnimatedLength *textLength ();
    [propputref, id (DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)] void lengthAdjust (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)] ISVGAnimatedEnumeration *lengthAdjust ();
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETNUMBEROFCHARS)] long getNumberOfChars ();
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETCOMPUTEDTEXTLENGTH)] float getComputedTextLength ();
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETSUBSTRINGLENGTH)] float getSubStringLength ([in] long charnum,[in] long nchars);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETSTARTPOSITIONOFCHAR)] ISVGPoint *getStartPositionOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETENDPOSITIONOFCHAR)] ISVGPoint *getEndPositionOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETEXTENTOFCHAR)] ISVGRect *getExtentOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETROTATIONOFCHAR)] float getRotationOfChar ([in] long charnum);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETCHARNUMATPOSITION)] long getCharNumAtPosition ([in] ISVGPoint *point);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_SELECTSUBSTRING)] void selectSubString ([in] long charnum,[in] long nchars);
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
    [propput, id (DISPID_ISVGELEMENT_XMLBASE)] void xmlbase (BSTR v);
    [propget, id (DISPID_ISVGELEMENT_XMLBASE)] BSTR xmlbase ();
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] void ownerSVGElement (ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] ISVGSVGElement *ownerSVGElement ();
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] void viewportElement (ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] ISVGElement *viewportElement ();
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] void focusable (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] ISVGAnimatedEnumeration *focusable ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] ISVGStringList *requiredFeatures ();
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] ISVGStringList *requiredExtensions ();
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] ISVGStringList *systemLanguage ();
    [id (DISPID_ISVGTESTS_HASEXTENSION)] VARIANT_BOOL hasExtension ([in] BSTR extension);
    [propput, id (DISPID_ISVGLANGSPACE_XMLLANG)] void xmllang (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLLANG)] BSTR xmllang ();
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] void xmlspace (BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] BSTR xmlspace ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [noncreatable, uuid (305105eb-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGTextPathElement {
    [default] dispinterface DispSVGTextPathElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGTextPathElement;
    interface ISVGTextContentElement;
    interface ISVGURIReference;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGTextPathElement;")
  [odl, oleautomation, dual, uuid (3051077d-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMXmlSerializer : IDispatch {
    [id (DISPID_IDOMXMLSERIALIZER_SERIALIZETOSTRING)] HRESULT serializeToString ([in] IHTMLDOMNode *pNode,[retval, out] BSTR *pString);
  };
  [odl, oleautomation, dual, uuid (3051077f-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMXmlSerializerFactory : IDispatch {
    [id (DISPID_IDOMXMLSERIALIZERFACTORY_CREATE)] HRESULT create ([retval, out] IDOMXmlSerializer **);
  };
  [odl, oleautomation, dual, uuid (30510781-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMParser : IDispatch {
    [id (DISPID_IDOMPARSER_PARSEFROMSTRING)] HRESULT parseFromString ([in] BSTR xmlSource,[in] BSTR mimeType,[retval, out] IHTMLDocument2 **ppNode);
  };
  [odl, oleautomation, dual, uuid (30510783-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMParserFactory : IDispatch {
    [id (DISPID_IDOMPARSERFACTORY_CREATE)] HRESULT create ([retval, out] IDOMParser **);
  };
  [hidden, uuid (305900ad-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispXMLSerializer {
    properties:
    methods:
    [id (DISPID_IDOMXMLSERIALIZER_SERIALIZETOSTRING)] BSTR serializeToString ([in] IHTMLDOMNode *pNode);
  };
  [noncreatable, uuid (3051077e-98b5-11cf-bb82-00aa00bdce0b)] coclass XMLSerializer {
    [default] dispinterface DispXMLSerializer;
    interface IDOMXmlSerializer;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMXmlSerializer;")
  [noncreatable, uuid (30510780-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDOMXmlSerializerFactory {
    [default] interface IDOMXmlSerializerFactory;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMXmlSerializerFactory;")
  [hidden, uuid (305900ae-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMParser {
    properties:
    methods:
    [id (DISPID_IDOMPARSER_PARSEFROMSTRING)] IHTMLDocument2 *parseFromString ([in] BSTR xmlSource,[in] BSTR mimeType);
  };
  [noncreatable, uuid (30510782-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMParser {
    [default] dispinterface DispDOMParser;
    interface IDOMParser;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMParser;")
  [noncreatable, uuid (30510784-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMParserFactory {
    [default] interface IDOMParserFactory;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMParserFactory;")
  [hidden, uuid (305900ba-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLSemanticElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
  };
  [noncreatable, uuid (305107b0-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLSemanticElement {
    [default] dispinterface DispHTMLSemanticElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSemanticElement;")
  [odl, oleautomation, dual, uuid (3050f2d6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLProgressElement : IDispatch {
    [propput, id (DISPID_IHTMLPROGRESSELEMENT_VALUE)] HRESULT value ([in] float v);
    [propget, id (DISPID_IHTMLPROGRESSELEMENT_VALUE)] HRESULT value ([retval, out] float *p);
    [propput, id (DISPID_IHTMLPROGRESSELEMENT_MAX)] HRESULT max ([in] float v);
    [propget, id (DISPID_IHTMLPROGRESSELEMENT_MAX)] HRESULT max ([retval, out] float *p);
    [propget, id (DISPID_IHTMLPROGRESSELEMENT_POSITION)] HRESULT position ([retval, out] float *p);
    [propget, id (DISPID_IHTMLPROGRESSELEMENT_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
  };
  [hidden, uuid (305900af-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLProgressElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propget, id (DISPID_IHTMLELEMENT2_SCOPENAME)] BSTR scopeName ();
    [id (DISPID_IHTMLELEMENT2_SETCAPTURE)] void setCapture ([defaultvalue (-1), in] VARIANT_BOOL containerCapture);
    [id (DISPID_IHTMLELEMENT2_RELEASECAPTURE)] void releaseCapture ();
    [propput, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] void onlosecapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] VARIANT onlosecapture ();
    [id (DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] BSTR componentFromPoint ([in] long x,[in] long y);
    [id (DISPID_IHTMLELEMENT2_DOSCROLL)] void doScroll ([optional, in] VARIANT component);
    [propput, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] void onbeforecut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] VARIANT onbeforecut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] void oncut (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] VARIANT oncut ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] void onbeforecopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] VARIANT onbeforecopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] void oncopy (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] VARIANT oncopy ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] void onbeforepaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] VARIANT onbeforepaste ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] void onpaste (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] VARIANT onpaste ();
    [propget, id (DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] IHTMLCurrentStyle *currentStyle ();
    [propput, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] void onpropertychange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] VARIANT onpropertychange ();
    [id (DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] IHTMLRectCollection *getClientRects ();
    [id (DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] IHTMLRect *getBoundingClientRect ();
    [id (DISPID_IHTMLELEMENT2_SETEXPRESSION)] void setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLELEMENT2_GETEXPRESSION)] VARIANT getExpression ([in] BSTR propname);
    [id (DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] VARIANT_BOOL removeExpression ([in] BSTR propname);
    [propput, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLELEMENT2_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLELEMENT2_BLUR)] void blur ();
    [id (DISPID_IHTMLELEMENT2_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLELEMENT2_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLELEMENT2_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLELEMENT2_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState ();
    [propput, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] void onreadystatechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] VARIANT onreadystatechange ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] void onrowsdelete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] VARIANT onrowsdelete ();
    [propput, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] void onrowsinserted (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] VARIANT onrowsinserted ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] void oncellchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] VARIANT oncellchange ();
    [propput, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] void dir (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] BSTR dir ();
    [id (DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] IDispatch *createControlRange ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] long scrollHeight ();
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] long scrollWidth ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] void scrollTop (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] long scrollTop ();
    [propput, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] void scrollLeft (long v);
    [propget, id (DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] long scrollLeft ();
    [id (DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] void clearAttributes ();
    [propput, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] void oncontextmenu (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] VARIANT oncontextmenu ();
    [id (DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] IHTMLElement *insertAdjacentElement ([in] BSTR where,[in] IHTMLElement *insertedElement);
    [id (DISPID_IHTMLELEMENT2_APPLYELEMENT)] IHTMLElement *applyElement ([in] IHTMLElement *apply,[in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] BSTR getAdjacentText ([in] BSTR where);
    [id (DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] BSTR replaceAdjacentText ([in] BSTR where,[in] BSTR newText);
    [propget, id (DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] VARIANT_BOOL canHaveChildren ();
    [id (DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] long addBehavior ([in] BSTR bstrUrl,[optional, in] VARIANT *pvarFactory);
    [id (DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] VARIANT_BOOL removeBehavior ([in] long cookie);
    [propget, id (DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] IHTMLStyle *runtimeStyle ();
    [propget, id (DISPID_IHTMLELEMENT2_BEHAVIORURNS)] IDispatch *behaviorUrns ();
    [propput, id (DISPID_IHTMLELEMENT2_TAGURN)] void tagUrn (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT2_TAGURN)] BSTR tagUrn ();
    [propput, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] void onbeforeeditfocus (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] VARIANT onbeforeeditfocus ();
    [propget, id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] long readyStateValue ();
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] IHTMLElementCollection *getElementsByTagName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] void mergeAttributes ([in] IHTMLElement *mergeThis,[optional, in] VARIANT *pvarFlags);
    [propget, id (DISPID_IHTMLELEMENT3_ISMULTILINE)] VARIANT_BOOL isMultiLine ();
    [propget, id (DISPID_IHTMLELEMENT3_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] void onlayoutcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] VARIANT onlayoutcomplete ();
    [propput, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] void onpage (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable] VARIANT onpage ();
    [propput, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] void inflateBlock (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] VARIANT_BOOL inflateBlock ();
    [propput, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] void onbeforedeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] VARIANT onbeforedeactivate ();
    [id (DISPID_IHTMLELEMENT3_SETACTIVE)] void setActive ();
    [propput, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] BSTR contentEditable ();
    [propget, id (DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)] VARIANT_BOOL isContentEditable ();
    [propput, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] void hideFocus (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable] VARIANT_BOOL hideFocus ();
    [propput, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLELEMENT3_ISDISABLED)] VARIANT_BOOL isDisabled ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] void onmove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] VARIANT onmove ();
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] void oncontrolselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] VARIANT oncontrolselect ();
    [id (DISPID_IHTMLELEMENT3_FIREEVENT)] VARIANT_BOOL fireEvent ([in] BSTR bstrEventName,[optional, in] VARIANT *pvarEventObject);
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] void onresizestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] VARIANT onresizestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] void onresizeend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] VARIANT onresizeend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] void onmovestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] VARIANT onmovestart ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] void onmoveend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable] VARIANT onmoveend ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] void onmouseenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] VARIANT onmouseenter ();
    [propput, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] void onmouseleave (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] VARIANT onmouseleave ();
    [propput, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] void onactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] VARIANT onactivate ();
    [propput, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] void ondeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] VARIANT ondeactivate ();
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] VARIANT_BOOL dragDrop ();
    [propget, id (DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] LONG glyphMode ();
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] void onmousewheel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] VARIANT onmousewheel ();
    [id (DISPID_IHTMLELEMENT4_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)] IHTMLDOMAttribute *getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)] IHTMLDOMAttribute *setAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [id (DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute *removeAttributeNode ([in] IHTMLDOMAttribute *pattr);
    [propput, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] void onbeforeactivate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] VARIANT onbeforeactivate ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] void onfocusin (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] VARIANT onfocusin ();
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] void onfocusout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] VARIANT onfocusout ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [propget, id (DISPID_IHTMLDOMNODE_NODETYPE)] long nodeType ();
    [propget, id (DISPID_IHTMLDOMNODE_PARENTNODE)] IHTMLDOMNode *parentNode ();
    [id (DISPID_IHTMLDOMNODE_HASCHILDNODES)] VARIANT_BOOL hasChildNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_CHILDNODES)] IDispatch *childNodes ();
    [propget, id (DISPID_IHTMLDOMNODE_ATTRIBUTES)] IDispatch *attributes ();
    [id (DISPID_IHTMLDOMNODE_INSERTBEFORE)] IHTMLDOMNode *insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE_REMOVECHILD)] IHTMLDOMNode *removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_REPLACECHILD)] IHTMLDOMNode *replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE_CLONENODE)] IHTMLDOMNode *cloneNode ([in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_REMOVENODE)] IHTMLDOMNode *removeNode ([defaultvalue (0), in] VARIANT_BOOL fDeep);
    [id (DISPID_IHTMLDOMNODE_SWAPNODE)] IHTMLDOMNode *swapNode ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE_REPLACENODE)] IHTMLDOMNode *replaceNode ([in] IHTMLDOMNode *replacement);
    [id (DISPID_IHTMLDOMNODE_APPENDCHILD)] IHTMLDOMNode *appendChild ([in] IHTMLDOMNode *newChild);
    [propget, id (DISPID_IHTMLDOMNODE_NODENAME)] BSTR nodeName ();
    [propput, id (DISPID_IHTMLDOMNODE_NODEVALUE)] void nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE_NODEVALUE)] VARIANT nodeValue ();
    [propget, id (DISPID_IHTMLDOMNODE_FIRSTCHILD)] IHTMLDOMNode *firstChild ();
    [propget, id (DISPID_IHTMLDOMNODE_LASTCHILD)] IHTMLDOMNode *lastChild ();
    [propget, id (DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] IHTMLDOMNode *previousSibling ();
    [propget, id (DISPID_IHTMLDOMNODE_NEXTSIBLING)] IHTMLDOMNode *nextSibling ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [propput, id (DISPID_IHTMLDOMNODE3_PREFIX)] void prefix (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_PREFIX)] VARIANT prefix ();
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] VARIANT localName ();
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] VARIANT namespaceURI ();
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] void textContent (VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] VARIANT textContent ();
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] VARIANT_BOOL isEqualNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] VARIANT lookupNamespaceURI ([in] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] VARIANT lookupPrefix ([in] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] VARIANT_BOOL isDefaultNamespace ([in] VARIANT *pvarNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] IHTMLDOMNode *ie9_appendChild ([in] IHTMLDOMNode *newChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] IHTMLDOMNode *ie9_insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] IHTMLDOMNode *ie9_removeChild ([in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] IHTMLDOMNode *ie9_replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] VARIANT_BOOL isSameNode ([in] IHTMLDOMNode3 *otherNode);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] USHORT compareDocumentPosition ([in] IHTMLDOMNode *otherNode);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] VARIANT_BOOL isSupported ([in] BSTR feature,[in] VARIANT version);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_getAttributeNode ([in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie8_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] VARIANT_BOOL hasAttribute ([in] BSTR name);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] void role (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] BSTR role ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] void ariaBusy (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] BSTR ariaBusy ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] void ariaChecked (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] BSTR ariaChecked ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] void ariaDisabled (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] BSTR ariaDisabled ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] void ariaExpanded (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] BSTR ariaExpanded ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] void ariaHaspopup (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] BSTR ariaHaspopup ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] void ariaHidden (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] BSTR ariaHidden ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] void ariaInvalid (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] BSTR ariaInvalid ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] void ariaMultiselectable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] BSTR ariaMultiselectable ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] void ariaPressed (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] BSTR ariaPressed ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] void ariaReadonly (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] BSTR ariaReadonly ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] void ariaRequired (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] BSTR ariaRequired ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] void ariaSecret (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] BSTR ariaSecret ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] void ariaSelected (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] BSTR ariaSelected ();
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] VARIANT ie8_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] void ie8_setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] VARIANT_BOOL ie8_removeAttribute ([in] BSTR strAttributeName);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] IHTMLAttributeCollection3 *ie8_attributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] void ariaValuenow (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] BSTR ariaValuenow ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] void ariaPosinset (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] short ariaPosinset ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] void ariaSetsize (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] short ariaSetsize ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] void ariaLevel (short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] short ariaLevel ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] void ariaValuemin (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] BSTR ariaValuemin ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] void ariaValuemax (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] BSTR ariaValuemax ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] void ariaControls (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] BSTR ariaControls ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] void ariaDescribedby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] BSTR ariaDescribedby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] void ariaFlowto (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] BSTR ariaFlowto ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] void ariaLabelledby (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] BSTR ariaLabelledby ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] void ariaActivedescendant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] BSTR ariaActivedescendant ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] void ariaOwns (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] BSTR ariaOwns ();
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] void ariaLive (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] BSTR ariaLive ();
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] void ariaRelevant (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] BSTR ariaRelevant ();
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] VARIANT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENS)] void setAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)] void removeAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)] IHTMLDOMAttribute2 *getAttributeNodeNS ([in] VARIANT *pvarNS,[in] BSTR bstrname);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] IHTMLDOMAttribute2 *setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] VARIANT_BOOL hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] VARIANT ie9_getAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)] void ie9_setAttribute ([in] BSTR strAttributeName,[in] VARIANT *pvarAttributeValue);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)] void ie9_removeAttribute ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_getAttributeNode ([in] BSTR strAttributeName);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_setAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] IHTMLDOMAttribute2 *ie9_removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] VARIANT_BOOL ie9_hasAttribute ([in] BSTR name);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] BSTR ie9_tagName ();
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] BSTR ie9_nodeName ();
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] VARIANT_BOOL msMatchesSelector ([in] BSTR v);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] VARIANT onended ();
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] VARIANT oninput ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] VARIANT onpause ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] VARIANT onplay ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] VARIANT onwaiting ();
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] VARIANT_BOOL ie9_hasAttributes ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] void onmslostpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmslostpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] void onmsgotpointercapture (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] VARIANT onmsgotpointercapture ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)] void msSetPointerCapture ([in] long pointerId);
    [id (DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)] void msReleasePointerCapture ([in] long pointerId);
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] void onmstransitionstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] VARIANT onmstransitionstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] void onmstransitionend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] VARIANT onmstransitionend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] void onmsanimationstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] VARIANT onmsanimationstart ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] void onmsanimationend (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] VARIANT onmsanimationend ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] void onmsanimationiteration (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] VARIANT onmsanimationiteration ();
    [propput, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] void oninvalid (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] VARIANT oninvalid ();
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] void xmsAcceleratorKey (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] BSTR xmsAcceleratorKey ();
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] void spellcheck (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] VARIANT spellcheck ();
    [propput, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] void oncuechange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] VARIANT oncuechange ();
    [propput, id (DISPID_IHTMLPROGRESSELEMENT_VALUE)] void value (float v);
    [propget, id (DISPID_IHTMLPROGRESSELEMENT_VALUE)] float value ();
    [propput, id (DISPID_IHTMLPROGRESSELEMENT_MAX)] void max (float v);
    [propget, id (DISPID_IHTMLPROGRESSELEMENT_MAX)] float max ();
    [propget, id (DISPID_IHTMLPROGRESSELEMENT_POSITION)] float position ();
    [propget, id (DISPID_IHTMLPROGRESSELEMENT_FORM)] IHTMLFormElement *form ();
  };
  [noncreatable, uuid (3050f2d5-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLProgressElement {
    [default] dispinterface DispHTMLProgressElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLProgressElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CProgressElement;")
  [odl, oleautomation, dual, uuid (305107b5-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMMSTransitionEvent : IDispatch {
    [propget, id (DISPID_IDOMMSTRANSITIONEVENT_PROPERTYNAME)] HRESULT propertyName ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMMSTRANSITIONEVENT_ELAPSEDTIME)] HRESULT elapsedTime ([retval, out] float *p);
    [id (DISPID_IDOMMSTRANSITIONEVENT_INITMSTRANSITIONEVENT)] HRESULT initMSTransitionEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] BSTR propertyName,[in] float elapsedTime);
  };
  [hidden, uuid (305900bb-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMMSTransitionEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMMSTRANSITIONEVENT_PROPERTYNAME)] BSTR propertyName ();
    [propget, id (DISPID_IDOMMSTRANSITIONEVENT_ELAPSEDTIME)] float elapsedTime ();
    [id (DISPID_IDOMMSTRANSITIONEVENT_INITMSTRANSITIONEVENT)] void initMSTransitionEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] BSTR propertyName,[in] float elapsedTime);
  };
  [noncreatable, uuid (305107b6-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMMSTransitionEvent {
    [default] dispinterface DispDOMMSTransitionEvent;
    interface IDOMEvent;
    interface IDOMMSTransitionEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMMSTransitionEvent;")
  [odl, oleautomation, dual, uuid (305107b7-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMMSAnimationEvent : IDispatch {
    [propget, id (DISPID_IDOMMSANIMATIONEVENT_ANIMATIONNAME)] HRESULT animationName ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMMSANIMATIONEVENT_ELAPSEDTIME)] HRESULT elapsedTime ([retval, out] float *p);
    [id (DISPID_IDOMMSANIMATIONEVENT_INITMSANIMATIONEVENT)] HRESULT initMSAnimationEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] BSTR animationName,[in] float elapsedTime);
  };
  [hidden, uuid (305900bc-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMMSAnimationEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMMSANIMATIONEVENT_ANIMATIONNAME)] BSTR animationName ();
    [propget, id (DISPID_IDOMMSANIMATIONEVENT_ELAPSEDTIME)] float elapsedTime ();
    [id (DISPID_IDOMMSANIMATIONEVENT_INITMSANIMATIONEVENT)] void initMSAnimationEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] BSTR animationName,[in] float elapsedTime);
  };
  [noncreatable, uuid (305107b8-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMMSAnimationEvent {
    [default] dispinterface DispDOMMSAnimationEvent;
    interface IDOMEvent;
    interface IDOMMSAnimationEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMMSAnimationEvent;")
  [odl, oleautomation, dual, uuid (305107c5-98b5-11cf-bb82-00aa00bdce0b)] interface IWebGeolocation : IDispatch {
    [id (DISPID_IWEBGEOLOCATION_GETCURRENTPOSITION)] HRESULT getCurrentPosition ([in] IDispatch *successCallback,[defaultvalue (0), in] IDispatch *errorCallback,[defaultvalue (0), in] IDispatch *options);
    [id (DISPID_IWEBGEOLOCATION_WATCHPOSITION)] HRESULT watchPosition ([in] IDispatch *successCallback,[defaultvalue (0), in] IDispatch *errorCallback,[defaultvalue (0), in] IDispatch *options,[defaultvalue (0), retval, out] long *watchId);
    [id (DISPID_IWEBGEOLOCATION_CLEARWATCH)] HRESULT clearWatch ([in] long watchId);
  };
  [odl, oleautomation, dual, uuid (305107c7-98b5-11cf-bb82-00aa00bdce0b)] interface IWebGeocoordinates : IDispatch {
    [propget, id (DISPID_IWEBGEOCOORDINATES_LATITUDE)] HRESULT latitude ([retval, out] double *p);
    [propget, id (DISPID_IWEBGEOCOORDINATES_LONGITUDE)] HRESULT longitude ([retval, out] double *p);
    [propget, id (DISPID_IWEBGEOCOORDINATES_ALTITUDE)] HRESULT altitude ([retval, out] VARIANT *p);
    [propget, id (DISPID_IWEBGEOCOORDINATES_ACCURACY)] HRESULT accuracy ([retval, out] double *p);
    [propget, id (DISPID_IWEBGEOCOORDINATES_ALTITUDEACCURACY)] HRESULT altitudeAccuracy ([retval, out] VARIANT *p);
    [propget, id (DISPID_IWEBGEOCOORDINATES_HEADING)] HRESULT heading ([retval, out] VARIANT *p);
    [propget, id (DISPID_IWEBGEOCOORDINATES_SPEED)] HRESULT speed ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (305107c9-98b5-11cf-bb82-00aa00bdce0b)] interface IWebGeopositionError : IDispatch {
    [propget, id (DISPID_IWEBGEOPOSITIONERROR_CODE)] HRESULT code ([retval, out] long *p);
    [propget, id (DISPID_IWEBGEOPOSITIONERROR_MESSAGE)] HRESULT message ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305107cd-98b5-11cf-bb82-00aa00bdce0b)] interface IWebGeoposition : IDispatch {
    [propget, id (DISPID_IWEBGEOPOSITION_COORDS)] HRESULT coords ([retval, out] IWebGeocoordinates **p);
    [propget, id (DISPID_IWEBGEOPOSITION_TIMESTAMP)] HRESULT timestamp ([retval, out] ULONGLONG *p);
  };
  [hidden, uuid (305900bd-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispWebGeolocation {
    properties:
    methods:
    [id (DISPID_IWEBGEOLOCATION_GETCURRENTPOSITION)] void getCurrentPosition ([in] IDispatch *successCallback,[defaultvalue (0), in] IDispatch *errorCallback,[defaultvalue (0), in] IDispatch *options);
    [id (DISPID_IWEBGEOLOCATION_WATCHPOSITION)] long watchPosition ([in] IDispatch *successCallback,[defaultvalue (0), in] IDispatch *errorCallback,[defaultvalue (0), in] IDispatch *options);
    [id (DISPID_IWEBGEOLOCATION_CLEARWATCH)] void clearWatch ([in] long watchId);
  };
  [noncreatable, uuid (305107c6-98b5-11cf-bb82-00aa00bdce0b)] coclass WebGeolocation {
    [default] dispinterface DispWebGeolocation;
    interface IWebGeolocation;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CWebGeolocation;")
  [hidden, uuid (305900be-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispWebGeocoordinates {
    properties:
    methods:
    [propget, id (DISPID_IWEBGEOCOORDINATES_LATITUDE)] double latitude ();
    [propget, id (DISPID_IWEBGEOCOORDINATES_LONGITUDE)] double longitude ();
    [propget, id (DISPID_IWEBGEOCOORDINATES_ALTITUDE)] VARIANT altitude ();
    [propget, id (DISPID_IWEBGEOCOORDINATES_ACCURACY)] double accuracy ();
    [propget, id (DISPID_IWEBGEOCOORDINATES_ALTITUDEACCURACY)] VARIANT altitudeAccuracy ();
    [propget, id (DISPID_IWEBGEOCOORDINATES_HEADING)] VARIANT heading ();
    [propget, id (DISPID_IWEBGEOCOORDINATES_SPEED)] VARIANT speed ();
  };
  [noncreatable, uuid (305107c8-98b5-11cf-bb82-00aa00bdce0b)] coclass WebGeocoordinates {
    [default] dispinterface DispWebGeocoordinates;
    interface IWebGeocoordinates;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CWebGeocoordinates;")
  [hidden, uuid (305900bf-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispWebGeopositionError {
    properties:
    methods:
    [propget, id (DISPID_IWEBGEOPOSITIONERROR_CODE)] long code ();
    [propget, id (DISPID_IWEBGEOPOSITIONERROR_MESSAGE)] BSTR message ();
  };
  [noncreatable, uuid (305107ca-98b5-11cf-bb82-00aa00bdce0b)] coclass WebGeopositionError {
    [default] dispinterface DispWebGeopositionError;
    interface IWebGeopositionError;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CWebGeopositionError;")
  [hidden, uuid (305900c1-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispWebGeoposition {
    properties:
    methods:
    [propget, id (DISPID_IWEBGEOPOSITION_COORDS)] IWebGeocoordinates *coords ();
    [propget, id (DISPID_IWEBGEOPOSITION_TIMESTAMP)] ULONGLONG timestamp ();
  };
  [noncreatable, uuid (305107ce-98b5-11cf-bb82-00aa00bdce0b)] coclass WebGeoposition {
    [default] dispinterface DispWebGeoposition;
    interface IWebGeoposition;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CWebGeoposition;")
  [odl, oleautomation, dual, uuid (7e8bc44d-AEFF-11d1-89c2-00c04fb6bfc4)] interface IClientCaps : IDispatch {
    [propget, id (DISPID_ICLIENTCAPS_JAVAENABLED)] HRESULT javaEnabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_ICLIENTCAPS_COOKIEENABLED)] HRESULT cookieEnabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_ICLIENTCAPS_CPUCLASS)] HRESULT cpuClass ([retval, out] BSTR *p);
    [propget, id (DISPID_ICLIENTCAPS_SYSTEMLANGUAGE)] HRESULT systemLanguage ([retval, out] BSTR *p);
    [propget, id (DISPID_ICLIENTCAPS_USERLANGUAGE)] HRESULT userLanguage ([retval, out] BSTR *p);
    [propget, id (DISPID_ICLIENTCAPS_PLATFORM)] HRESULT platform ([retval, out] BSTR *p);
    [propget, id (DISPID_ICLIENTCAPS_CONNECTIONSPEED)] HRESULT connectionSpeed ([retval, out] long *p);
    [propget, id (DISPID_ICLIENTCAPS_ONLINE)] HRESULT onLine ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_ICLIENTCAPS_COLORDEPTH)] HRESULT colorDepth ([retval, out] long *p);
    [propget, id (DISPID_ICLIENTCAPS_BUFFERDEPTH)] HRESULT bufferDepth ([retval, out] long *p);
    [propget, id (DISPID_ICLIENTCAPS_WIDTH)] HRESULT width ([retval, out] long *p);
    [propget, id (DISPID_ICLIENTCAPS_HEIGHT)] HRESULT height ([retval, out] long *p);
    [propget, id (DISPID_ICLIENTCAPS_AVAILHEIGHT)] HRESULT availHeight ([retval, out] long *p);
    [propget, id (DISPID_ICLIENTCAPS_AVAILWIDTH)] HRESULT availWidth ([retval, out] long *p);
    [propget, id (DISPID_ICLIENTCAPS_CONNECTIONTYPE)] HRESULT connectionType ([retval, out] BSTR *p);
    [id (DISPID_ICLIENTCAPS_ISCOMPONENTINSTALLED)] HRESULT isComponentInstalled ([in] BSTR bstrName,[in] BSTR bstrUrl,[defaultvalue (L""), in] BSTR bStrVer,[retval, out, defaultvalue (0)] VARIANT_BOOL *p);
    [id (DISPID_ICLIENTCAPS_GETCOMPONENTVERSION)] HRESULT getComponentVersion ([in] BSTR bstrName,[in] BSTR bstrUrl,[retval, out] BSTR *pbstrVer);
    [id (DISPID_ICLIENTCAPS_COMPAREVERSIONS)] HRESULT compareVersions ([in] BSTR bstrVer1,[in] BSTR bstrVer2,[retval, out] long *p);
    [id (DISPID_ICLIENTCAPS_ADDCOMPONENTREQUEST)] HRESULT addComponentRequest ([in] BSTR bstrName,[in] BSTR bstrUrl,[defaultvalue (L""), in] BSTR bStrVer);
    [id (DISPID_ICLIENTCAPS_DOCOMPONENTREQUEST)] HRESULT doComponentRequest ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_ICLIENTCAPS_CLEARCOMPONENTREQUEST)] HRESULT clearComponentRequest ();
  };
  [uuid (7e8bc44e-AEFF-11d1-89c2-00c04fb6bfc4)] coclass CClientCaps {
    [default] interface IClientCaps;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CClientCaps;")
  [odl, oleautomation, dual, uuid (30510816-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMMSManipulationEvent : IDispatch {
    [propget, id (DISPID_IDOMMSMANIPULATIONEVENT_LASTSTATE)] HRESULT lastState ([retval, out] long *p);
    [propget, id (DISPID_IDOMMSMANIPULATIONEVENT_CURRENTSTATE)] HRESULT currentState ([retval, out] long *p);
    [id (DISPID_IDOMMSMANIPULATIONEVENT_INITMSMANIPULATIONEVENT)] HRESULT initMSManipulationEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] long detailArg,[in] long lastState,[in] long currentState);
  };
  [hidden, uuid (305900e1-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMMSManipulationEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMUIEVENT_VIEW)] IHTMLWindow2 *view ();
    [propget, id (DISPID_IDOMUIEVENT_DETAIL)] long detail ();
    [id (DISPID_IDOMUIEVENT_INITUIEVENT)] void initUIEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *view,[in] long detail);
    [propget, id (DISPID_IDOMMSMANIPULATIONEVENT_LASTSTATE)] long lastState ();
    [propget, id (DISPID_IDOMMSMANIPULATIONEVENT_CURRENTSTATE)] long currentState ();
    [id (DISPID_IDOMMSMANIPULATIONEVENT_INITMSMANIPULATIONEVENT)] void initMSManipulationEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] long detailArg,[in] long lastState,[in] long currentState);
  };
  [noncreatable, uuid (30510817-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMMSManipulationEvent {
    [default] dispinterface DispDOMMSManipulationEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMMSManipulationEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMMSManipulationEvent;")
  [odl, oleautomation, dual, uuid (305107ff-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMCloseEvent : IDispatch {
    [propget, id (DISPID_IDOMCLOSEEVENT_WASCLEAN)] HRESULT wasClean ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IDOMCLOSEEVENT_INITCLOSEEVENT)] HRESULT initCloseEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] VARIANT_BOOL wasClean,[in] long code,[in] BSTR reason);
  };
  [hidden, uuid (305900dc-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMCloseEvent {
    properties:
    methods:
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] VARIANT_BOOL bubbles ();
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] VARIANT_BOOL cancelable ();
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] IEventTarget *currentTarget ();
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] VARIANT_BOOL defaultPrevented ();
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] USHORT eventPhase ();
    [propget, id (DISPID_IDOMEVENT_TARGET)] IEventTarget *target ();
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] ULONGLONG timeStamp ();
    [propget, id (DISPID_IDOMEVENT_TYPE)] BSTR type ();
    [id (DISPID_IDOMEVENT_INITEVENT)] void initEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable);
    [id (DISPID_IDOMEVENT_PREVENTDEFAULT)] void preventDefault ();
    [id (DISPID_IDOMEVENT_STOPPROPAGATION)] void stopPropagation ();
    [id (DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)] void stopImmediatePropagation ();
    [propget, id (DISPID_IDOMEVENT_ISTRUSTED)] VARIANT_BOOL isTrusted ();
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] void cancelBubble (VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] VARIANT_BOOL cancelBubble ();
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] IHTMLElement *srcElement ();
    [propget, id (DISPID_IDOMCLOSEEVENT_WASCLEAN)] VARIANT_BOOL wasClean ();
    [id (DISPID_IDOMCLOSEEVENT_INITCLOSEEVENT)] void initCloseEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] VARIANT_BOOL wasClean,[in] long code,[in] BSTR reason);
  };
  [noncreatable, uuid (30510800-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMCloseEvent {
    [default] dispinterface DispDOMCloseEvent;
    interface IDOMEvent;
    interface IDOMCloseEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMCloseEvent;")
  [odl, oleautomation, dual, uuid (30510828-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLApplicationCache : IDispatch {
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_STATUS)] HRESULT status ([retval, out] long *p);
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONCHECKING)] HRESULT onchecking ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONCHECKING)] HRESULT onchecking ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONERROR)] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONERROR)] HRESULT onerror ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONNOUPDATE)] HRESULT onnoupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONNOUPDATE)] HRESULT onnoupdate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONDOWNLOADING)] HRESULT ondownloading ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONDOWNLOADING)] HRESULT ondownloading ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONPROGRESS)] HRESULT onprogress ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONPROGRESS)] HRESULT onprogress ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONUPDATEREADY)] HRESULT onupdateready ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONUPDATEREADY)] HRESULT onupdateready ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONCACHED)] HRESULT oncached ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONCACHED)] HRESULT oncached ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONOBSOLETE)] HRESULT onobsolete ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONOBSOLETE)] HRESULT onobsolete ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLAPPLICATIONCACHE_UPDATE)] HRESULT update ();
    [id (DISPID_IHTMLAPPLICATIONCACHE_SWAPCACHE)] HRESULT swapCache ();
    [id (DISPID_IHTMLAPPLICATIONCACHE_ABORT)] HRESULT abort ();
  };
  [hidden, uuid (305900e4-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispApplicationCache {
    properties:
    methods:
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_STATUS)] long status ();
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONCHECKING)] void onchecking (VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONCHECKING)] VARIANT onchecking ();
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONERROR)] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONERROR)] VARIANT onerror ();
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONNOUPDATE)] void onnoupdate (VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONNOUPDATE)] VARIANT onnoupdate ();
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONDOWNLOADING)] void ondownloading (VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONDOWNLOADING)] VARIANT ondownloading ();
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONPROGRESS)] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONPROGRESS)] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONUPDATEREADY)] void onupdateready (VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONUPDATEREADY)] VARIANT onupdateready ();
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONCACHED)] void oncached (VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONCACHED)] VARIANT oncached ();
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONOBSOLETE)] void onobsolete (VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONOBSOLETE)] VARIANT onobsolete ();
    [id (DISPID_IHTMLAPPLICATIONCACHE_UPDATE)] void update ();
    [id (DISPID_IHTMLAPPLICATIONCACHE_SWAPCACHE)] void swapCache ();
    [id (DISPID_IHTMLAPPLICATIONCACHE_ABORT)] void abort ();
  };
  [noncreatable, uuid (30510829-98b5-11cf-bb82-00aa00bdce0b)] coclass ApplicationCache {
    [default] interface IHTMLApplicationCache;
  };
  
  interface IElementBehaviorSite;
  interface ICSSFilterSite;
  interface IMarkupPointer;
  interface IMarkupContainer;
  interface IMarkupContainer2;
  interface IHTMLChangeLog;
  interface IHTMLChangeSink;
  interface IHTMLDocument2;
  interface IActiveIMMApp;
  interface ISegmentList;
  interface ISegmentListIterator;
  interface IHTMLCaret;
  interface ISegment;
  interface IElementSegment;
  interface IHighlightSegment;
  interface IHighlightRenderingServices;
  interface ILineInfo;
  interface IDisplayPointer;
  interface IDisplayServices;
  interface IHtmlDlgSafeHelper;
  interface IBlockFormats;
  interface IFontNames;
  interface IScriptEventHandler;
  interface IHTMLPainter;
  interface IHTMLPaintSite;

  cpp_quote("EXTERN_C const GUID CLSID_CHTMLNamespace;")
  cpp_quote("EXTERN_C const GUID CLSID_CHTMLNamespaceCollection;")
  cpp_quote("EXTERN_C const GUID CLSID_HtmlDlgSafeHelper;")
  cpp_quote("EXTERN_C const GUID CLSID_BlockFormats;")
  cpp_quote("EXTERN_C const GUID CLSID_FontNames;")
  cpp_quote("EXTERN_C const GUID CLSID_CApplicationCache;")
  
  typedef enum _ELEMENT_CORNER {
    ELEMENT_CORNER_NONE = 0,
    ELEMENT_CORNER_TOP = 1,
    ELEMENT_CORNER_LEFT = 2,
    ELEMENT_CORNER_BOTTOM = 3,
    ELEMENT_CORNER_RIGHT = 4,
    ELEMENT_CORNER_TOPLEFT = 5,
    ELEMENT_CORNER_TOPRIGHT = 6,
    ELEMENT_CORNER_BOTTOMLEFT = 7,
    ELEMENT_CORNER_BOTTOMRIGHT = 8,
    ELEMENT_CORNER_Max = 0x7FFFFFFF
  } ELEMENT_CORNER;

  typedef enum _SECUREURLHOSTVALIDATE_FLAGS {
    SUHV_PROMPTBEFORENO = 0x1,
    SUHV_SILENTYES = 0x2,
    SUHV_UNSECURESOURCE = 0x00000004,
    SECUREURLHOSTVALIDATE_FLAGS_Max = 0x7FFFFFFF
  } SECUREURLHOSTVALIDATE_FLAGS;

  typedef enum _POINTER_GRAVITY {
    POINTER_GRAVITY_Left = 0,
    POINTER_GRAVITY_Right = 1,
    POINTER_GRAVITY_Max = 0x7FFFFFFF
  } POINTER_GRAVITY;

  typedef enum _ELEMENT_ADJACENCY {
    ELEM_ADJ_BeforeBegin = 0,
    ELEM_ADJ_AfterBegin = 1,
    ELEM_ADJ_BeforeEnd = 2,
    ELEM_ADJ_AfterEnd = 3,
    ELEMENT_ADJACENCY_Max = 0x7FFFFFFF
  } ELEMENT_ADJACENCY;

  typedef enum _MARKUP_CONTEXT_TYPE {
    CONTEXT_TYPE_None = 0,
    CONTEXT_TYPE_Text = 1,
    CONTEXT_TYPE_EnterScope = 2,
    CONTEXT_TYPE_ExitScope = 3,
    CONTEXT_TYPE_NoScope = 4,
    MARKUP_CONTEXT_TYPE_Max = 0x7FFFFFFF
  } MARKUP_CONTEXT_TYPE;

  typedef enum _FINDTEXT_FLAGS {
    FINDTEXT_BACKWARDS = 0x1,
    FINDTEXT_WHOLEWORD = 0x2,
    FINDTEXT_MATCHCASE = 0x00000004,
    FINDTEXT_RAW = 0x00020000,
    FINDTEXT_MATCHREPEATEDWHITESPACE = 0x00040000,
    FINDTEXT_MATCHDIAC = 0x20000000,
    FINDTEXT_MATCHKASHIDA = 0x40000000,
    FINDTEXT_MATCHALEFHAMZA = 0x80000000,
    FINDTEXT_FLAGS_Max = 0x7FFFFFFF
  } FINDTEXT_FLAGS;

  typedef enum _MOVEUNIT_ACTION {
    MOVEUNIT_PREVCHAR = 0,
    MOVEUNIT_NEXTCHAR = 1,
    MOVEUNIT_PREVCLUSTERBEGIN = 2,
    MOVEUNIT_NEXTCLUSTERBEGIN = 3,
    MOVEUNIT_PREVCLUSTEREND = 4,
    MOVEUNIT_NEXTCLUSTEREND = 5,
    MOVEUNIT_PREVWORDBEGIN = 6,
    MOVEUNIT_NEXTWORDBEGIN = 7,
    MOVEUNIT_PREVWORDEND = 8,
    MOVEUNIT_NEXTWORDEND = 9,
    MOVEUNIT_PREVPROOFWORD = 10,
    MOVEUNIT_NEXTPROOFWORD = 11,
    MOVEUNIT_NEXTURLBEGIN = 12,
    MOVEUNIT_PREVURLBEGIN = 13,
    MOVEUNIT_NEXTURLEND = 14,
    MOVEUNIT_PREVURLEND = 15,
    MOVEUNIT_PREVSENTENCE = 16,
    MOVEUNIT_NEXTSENTENCE = 17,
    MOVEUNIT_PREVBLOCK = 18,
    MOVEUNIT_NEXTBLOCK = 19,
    MOVEUNIT_ACTION_Max = 0x7FFFFFFF
  } MOVEUNIT_ACTION;

  typedef enum _PARSE_FLAGS {
    PARSE_ABSOLUTIFYIE40URLS = 0x1,
    PARSE_DISABLEVML = 0x2,
    PARSE_FLAGS_Max = 0x7FFFFFFF
  } PARSE_FLAGS;

  typedef enum _ELEMENT_TAG_ID {
    TAGID_NULL = 0,
    TAGID_UNKNOWN = 1,
    TAGID_A = 2,
    TAGID_ACRONYM = 3,
    TAGID_ADDRESS = 4,
    TAGID_APPLET = 5,
    TAGID_AREA = 6,
    TAGID_B = 7,
    TAGID_BASE = 8,
    TAGID_BASEFONT = 9,
    TAGID_BDO = 10,
    TAGID_BGSOUND = 11,
    TAGID_BIG = 12,
    TAGID_BLINK = 13,
    TAGID_BLOCKQUOTE = 14,
    TAGID_BODY = 15,
    TAGID_BR = 16,
    TAGID_BUTTON = 17,
    TAGID_CAPTION = 18,
    TAGID_CENTER = 19,
    TAGID_CITE = 20,
    TAGID_CODE = 21,
    TAGID_COL = 22,
    TAGID_COLGROUP = 23,
    TAGID_COMMENT = 24,
    TAGID_COMMENT_RAW = 25,
    TAGID_DD = 26,
    TAGID_DEL = 27,
    TAGID_DFN = 28,
    TAGID_DIR = 29,
    TAGID_DIV = 30,
    TAGID_DL = 31,
    TAGID_DT = 32,
    TAGID_EM = 33,
    TAGID_EMBED = 34,
    TAGID_FIELDSET = 35,
    TAGID_FONT = 36,
    TAGID_FORM = 37,
    TAGID_FRAME = 38,
    TAGID_FRAMESET = 39,
    TAGID_GENERIC = 40,
    TAGID_H1 = 41,
    TAGID_H2 = 42,
    TAGID_H3 = 43,
    TAGID_H4 = 44,
    TAGID_H5 = 45,
    TAGID_H6 = 46,
    TAGID_HEAD = 47,
    TAGID_HR = 48,
    TAGID_HTML = 49,
    TAGID_I = 50,
    TAGID_IFRAME = 51,
    TAGID_IMG = 52,
    TAGID_INPUT = 53,
    TAGID_INS = 54,
    TAGID_KBD = 55,
    TAGID_LABEL = 56,
    TAGID_LEGEND = 57,
    TAGID_LI = 58,
    TAGID_LINK = 59,
    TAGID_LISTING = 60,
    TAGID_MAP = 61,
    TAGID_MARQUEE = 62,
    TAGID_MENU = 63,
    TAGID_META = 64,
    TAGID_NEXTID = 65,
    TAGID_NOBR = 66,
    TAGID_NOEMBED = 67,
    TAGID_NOFRAMES = 68,
    TAGID_NOSCRIPT = 69,
    TAGID_OBJECT = 70,
    TAGID_OL = 71,
    TAGID_OPTION = 72,
    TAGID_P = 73,
    TAGID_PARAM = 74,
    TAGID_PLAINTEXT = 75,
    TAGID_PRE = 76,
    TAGID_Q = 77,
    TAGID_RP = 78,
    TAGID_RT = 79,
    TAGID_RUBY = 80,
    TAGID_S = 81,
    TAGID_SAMP = 82,
    TAGID_SCRIPT = 83,
    TAGID_SELECT = 84,
    TAGID_SMALL = 85,
    TAGID_SPAN = 86,
    TAGID_STRIKE = 87,
    TAGID_STRONG = 88,
    TAGID_STYLE = 89,
    TAGID_SUB = 90,
    TAGID_SUP = 91,
    TAGID_TABLE = 92,
    TAGID_TBODY = 93,
    TAGID_TC = 94,
    TAGID_TD = 95,
    TAGID_TEXTAREA = 96,
    TAGID_TFOOT = 97,
    TAGID_TH = 98,
    TAGID_THEAD = 99,
    TAGID_TITLE = 100,
    TAGID_TR = 101,
    TAGID_TT = 102,
    TAGID_U = 103,
    TAGID_UL = 104,
    TAGID_VAR = 105,
    TAGID_WBR = 106,
    TAGID_XMP = 107,
    TAGID_ROOT = 108,
    TAGID_OPTGROUP = 109,
    TAGID_ABBR = 110,
    TAGID_SVG_A = 111,
    TAGID_SVG_ALTGLYPH = 112,
    TAGID_SVG_ALTGLYPHDEF = 113,
    TAGID_SVG_ALTGLYPHITEM = 114,
    TAGID_SVG_ANIMATE = 115,
    TAGID_SVG_ANIMATECOLOR = 116,
    TAGID_SVG_ANIMATEMOTION = 117,
    TAGID_SVG_ANIMATETRANSFORM = 118,
    TAGID_SVG_CIRCLE = 119,
    TAGID_SVG_CLIPPATH = 120,
    TAGID_SVG_COLOR_PROFILE = 121,
    TAGID_SVG_CURSOR = 122,
    TAGID_SVG_DEFINITION_SRC = 123,
    TAGID_SVG_DEFS = 124,
    TAGID_SVG_DESC = 125,
    TAGID_SVG_ELLIPSE = 126,
    TAGID_SVG_FEBLEND = 127,
    TAGID_SVG_FECOLORMATRIX = 128,
    TAGID_SVG_FECOMPONENTTRANSFER = 129,
    TAGID_SVG_FECOMPOSITE = 130,
    TAGID_SVG_FECONVOLVEMATRIX = 131,
    TAGID_SVG_FEDIFFUSELIGHTING = 132,
    TAGID_SVG_FEDISPLACEMENTMAP = 133,
    TAGID_SVG_FEDISTANTLIGHT = 134,
    TAGID_SVG_FEFLOOD = 135,
    TAGID_SVG_FEFUNCA = 136,
    TAGID_SVG_FEFUNCB = 137,
    TAGID_SVG_FEFUNCG = 138,
    TAGID_SVG_FEFUNCR = 139,
    TAGID_SVG_FEGAUSSIANBLUR = 140,
    TAGID_SVG_FEIMAGE = 141,
    TAGID_SVG_FEMERGE = 142,
    TAGID_SVG_FEMERGENODE = 143,
    TAGID_SVG_FEMORPHOLOGY = 144,
    TAGID_SVG_FEOFFSET = 145,
    TAGID_SVG_FEPOINTLIGHT = 146,
    TAGID_SVG_FESPECULARLIGHTING = 147,
    TAGID_SVG_FESPOTLIGHT = 148,
    TAGID_SVG_FETILE = 149,
    TAGID_SVG_FETURBULENCE = 150,
    TAGID_SVG_FILTER = 151,
    TAGID_SVG_FONT = 152,
    TAGID_SVG_FONT_FACE = 153,
    TAGID_SVG_FONT_FACE_FORMAT = 154,
    TAGID_SVG_FONT_FACE_NAME = 155,
    TAGID_SVG_FONT_FACE_SRC = 156,
    TAGID_SVG_FONT_FACE_URI = 157,
    TAGID_SVG_FOREIGNOBJECT = 158,
    TAGID_SVG_G = 159,
    TAGID_SVG_GLYPH = 160,
    TAGID_SVG_GLYPHREF = 161,
    TAGID_SVG_HKERN = 162,
    TAGID_SVG_IMAGE = 163,
    TAGID_SVG_LINE = 164,
    TAGID_SVG_LINEARGRADIENT = 165,
    TAGID_SVG_MARKER = 166,
    TAGID_SVG_MASK = 167,
    TAGID_SVG_METADATA = 168,
    TAGID_SVG_MISSING_GLYPH = 169,
    TAGID_SVG_MPATH = 170,
    TAGID_SVG_PATH = 171,
    TAGID_SVG_PATTERN = 172,
    TAGID_SVG_POLYGON = 173,
    TAGID_SVG_POLYLINE = 174,
    TAGID_SVG_RADIALGRADIENT = 175,
    TAGID_SVG_RECT = 176,
    TAGID_SVG_SCRIPT = 177,
    TAGID_SVG_SET = 178,
    TAGID_SVG_STOP = 179,
    TAGID_SVG_STYLE = 180,
    TAGID_SVG_SVG = 181,
    TAGID_SVG_SWITCH = 182,
    TAGID_SVG_SYMBOL = 183,
    TAGID_SVG_TEXT = 184,
    TAGID_SVG_TEXTPATH = 185,
    TAGID_SVG_TITLE = 186,
    TAGID_SVG_TREF = 187,
    TAGID_SVG_TSPAN = 188,
    TAGID_SVG_USE = 189,
    TAGID_SVG_VIEW = 190,
    TAGID_SVG_VKERN = 191,
    TAGID_AUDIO = 192,
    TAGID_SOURCE = 193,
    TAGID_VIDEO = 194,
    TAGID_CANVAS = 195,
    TAGID_DOCTYPE = 196,
    TAGID_KEYGEN = 197,
    TAGID_PROCESSINGINSTRUCTION = 198,
    TAGID_ARTICLE = 199,
    TAGID_ASIDE = 200,
    TAGID_FIGCAPTION = 201,
    TAGID_FIGURE = 202,
    TAGID_FOOTER = 203,
    TAGID_HEADER = 204,
    TAGID_HGROUP = 205,
    TAGID_MARK = 206,
    TAGID_NAV = 207,
    TAGID_SECTION = 208,
    TAGID_PROGRESS = 209,
    TAGID_MATHML_ANNOTATION_XML = 210,
    TAGID_MATHML_MATH = 211,
    TAGID_MATHML_MI = 212,
    TAGID_MATHML_MN = 213,
    TAGID_MATHML_MO = 214,
    TAGID_MATHML_MS = 215,
    TAGID_MATHML_MTEXT = 216,
    TAGID_DATALIST = 217,
    TAGID_TRACK = 218,
    TAGID_ISINDEX = 219,
    TAGID_COMMAND = 220,
    TAGID_DETAILS = 221,
    TAGID_SUMMARY = 222,
    TAGID_COUNT = 223,
    TAGID_LAST_PREDEFINED = 10000,
    ELEMENT_TAG_ID_Max = 0x7FFFFFFF
  } ELEMENT_TAG_ID;

  typedef enum _SELECTION_TYPE {
    SELECTION_TYPE_None = 0,
    SELECTION_TYPE_Caret = 1,
    SELECTION_TYPE_Text = 2,
    SELECTION_TYPE_Control = 3,
    SELECTION_TYPE_Max = 0x7FFFFFFF
  } SELECTION_TYPE;

  typedef enum _SAVE_SEGMENTS_FLAGS {
    SAVE_SEGMENTS_NoIE4SelectionCompat = 0x0001,
    SAVE_SEGMENTS_FLAGS_Max = 0x7FFFFFFF
  } SAVE_SEGMENTS_FLAGS;

  typedef enum _CARET_DIRECTION {
    CARET_DIRECTION_INDETERMINATE = 0,
    CARET_DIRECTION_SAME = 1,
    CARET_DIRECTION_BACKWARD = 2,
    CARET_DIRECTION_FORWARD = 3,
    CARET_DIRECTION_Max = 0x7FFFFFFF
  } CARET_DIRECTION;

  typedef enum _LINE_DIRECTION {
    LINE_DIRECTION_RightToLeft = 1,
    LINE_DIRECTION_LeftToRight = 2,
    LINE_DIRECTION_Max = 0x7FFFFFFF
  } LINE_DIRECTION;

  typedef enum _HT_OPTIONS {
    HT_OPT_AllowAfterEOL = 0x1,
    HT_OPTIONS_Max = 0x7FFFFFFF
  } HT_OPTIONS;

  typedef enum _HT_RESULTS {
    HT_RESULTS_Glyph = 0x1,
    HT_RESULTS_Max = 0x7FFFFFFF
  } HT_RESULTS;

  typedef enum _DISPLAY_MOVEUNIT {
    DISPLAY_MOVEUNIT_PreviousLine = 1,
    DISPLAY_MOVEUNIT_NextLine = 2,
    DISPLAY_MOVEUNIT_CurrentLineStart = 3,
    DISPLAY_MOVEUNIT_CurrentLineEnd = 4,
    DISPLAY_MOVEUNIT_TopOfWindow = 5,
    DISPLAY_MOVEUNIT_BottomOfWindow = 6,
    DISPLAY_MOVEUNIT_Max = 0x7FFFFFFF
  } DISPLAY_MOVEUNIT;

  typedef enum _DISPLAY_GRAVITY {
    DISPLAY_GRAVITY_PreviousLine = 1,
    DISPLAY_GRAVITY_NextLine = 2,
    DISPLAY_GRAVITY_Max = 0x7FFFFFFF
  } DISPLAY_GRAVITY;

  typedef enum _DISPLAY_BREAK {
    DISPLAY_BREAK_None = 0x0,
    DISPLAY_BREAK_Block = 0x1,
    DISPLAY_BREAK_Break = 0x2,
    DISPLAY_BREAK_Max = 0x7FFFFFFF
  } DISPLAY_BREAK;

  typedef enum _COORD_SYSTEM {
    COORD_SYSTEM_GLOBAL = 0,
    COORD_SYSTEM_PARENT = 1,
    COORD_SYSTEM_CONTAINER = 2,
    COORD_SYSTEM_CONTENT = 3,
    COORD_SYSTEM_FRAME = 4,
    COORD_SYSTEM_CLIENT = 5,
    COORD_SYSTEM_Max = 0x7FFFFFFF
  } COORD_SYSTEM;

  typedef enum _DEV_CONSOLE_MESSAGE_LEVEL {
    DCML_INFORMATIONAL = 0x0,
    DCML_WARNING = 0x1,
    DCML_ERROR = 0x2,
    DEV_CONSOLE_MESSAGE_LEVEL_Max = 0x7FFFFFFF
  } DEV_CONSOLE_MESSAGE_LEVEL;

  typedef enum _DOM_EVENT_PHASE {
    DEP_CAPTURING_PHASE = 0x1,
    DEP_AT_TARGET = 0x2,
    DEP_BUBBLING_PHASE = 0x3,
    DOM_EVENT_PHASE_Max = 0x7FFFFFFF
  } DOM_EVENT_PHASE;

  typedef enum _SCRIPT_TIMER_TYPE {
    STT_TIMEOUT = 0x0,
    STT_INTERVAL = 0x1,
    STT_IMMEDIATE = 0x2,
    STT_ANIMATION_FRAME = 0x3,
    SCRIPT_TIMER_TYPE_Max = 0x7FFFFFFF
  } SCRIPT_TIMER_TYPE;

  typedef enum _HTML_PAINTER {
    HTMLPAINTER_OPAQUE = 0x1,
    HTMLPAINTER_TRANSPARENT = 0x2,
    HTMLPAINTER_ALPHA = 0x4,
    HTMLPAINTER_COMPLEX = 0x8,
    HTMLPAINTER_OVERLAY = 0x10,
    HTMLPAINTER_HITTEST = 0x20,
    HTMLPAINTER_SURFACE = 0x100,
    HTMLPAINTER_3DSURFACE = 0x200,
    HTMLPAINTER_NOBAND = 0x400,
    HTMLPAINTER_NODC = 0x1000,
    HTMLPAINTER_NOPHYSICALCLIP = 0x2000,
    HTMLPAINTER_NOSAVEDC = 0x4000,
    HTMLPAINTER_SUPPORTS_XFORM = 0x8000,
    HTMLPAINTER_EXPAND = 0x10000,
    HTMLPAINTER_NOSCROLLBITS = 0x20000,
    HTML_PAINTER_Max = 0x7FFFFFFF
  } HTML_PAINTER;

  typedef enum _HTML_PAINT_ZORDER {
    HTMLPAINT_ZORDER_NONE = 0,
    HTMLPAINT_ZORDER_REPLACE_ALL = 1,
    HTMLPAINT_ZORDER_REPLACE_CONTENT = 2,
    HTMLPAINT_ZORDER_REPLACE_BACKGROUND = 3,
    HTMLPAINT_ZORDER_BELOW_CONTENT = 4,
    HTMLPAINT_ZORDER_BELOW_FLOW = 5,
    HTMLPAINT_ZORDER_ABOVE_FLOW = 6,
    HTMLPAINT_ZORDER_ABOVE_CONTENT = 7,
    HTMLPAINT_ZORDER_WINDOW_TOP = 8,
    HTML_PAINT_ZORDER_Max = 0x7FFFFFFF
  } HTML_PAINT_ZORDER;

  typedef enum _HTML_PAINT_DRAW_FLAGS {
    HTMLPAINT_DRAW_UPDATEREGION = 0x1,
    HTMLPAINT_DRAW_USE_XFORM = 0x2,
    HTML_PAINT_DRAW_FLAGS_Max = 0x7FFFFFFF
  } HTML_PAINT_DRAW_FLAGS;

  typedef enum _HTML_PAINT_EVENT_FLAGS {
    HTMLPAINT_EVENT_TARGET = 0x0001,
    HTMLPAINT_EVENT_SETCURSOR = 0x0002,
    HTML_PAINT_EVENT_FLAGS_Max = 0x7FFFFFFF
  } HTML_PAINT_EVENT_FLAGS;

  typedef enum _HTML_PAINT_DRAW_INFO_FLAGS {
    HTMLPAINT_DRAWINFO_VIEWPORT = 0x1,
    HTMLPAINT_DRAWINFO_UPDATEREGION = 0x2,
    HTMLPAINT_DRAWINFO_XFORM = 0x4,
    HTML_PAINT_DRAW_INFO_FLAGS_Max = 0x7FFFFFFF
  } HTML_PAINT_DRAW_INFO_FLAGS;

  typedef struct _HTML_PAINTER_INFO {
    LONG lFlags;
    LONG lZOrder;
    IID iidDrawObject;
    RECT rcExpand;
  } HTML_PAINTER_INFO;

  typedef struct _HTML_PAINT_XFORM {
    FLOAT eM11;
    FLOAT eM12;
    FLOAT eM21;
    FLOAT eM22;
    FLOAT eDx;
    FLOAT eDy;
  } HTML_PAINT_XFORM;

  typedef struct _HTML_PAINT_DRAW_INFO {
    RECT rcViewport;
    HRGN hrgnUpdate;
    HTML_PAINT_XFORM xform;
  } HTML_PAINT_DRAW_INFO;

  interface IElementBehavior;
  interface IElementBehaviorSite;
  interface IHTMLElementDefaults;
  interface ISurfacePresenter;

  cpp_quote("EXTERN_C const GUID CLSID_CAppBehavior;")
  cpp_quote("EXTERN_C const GUID CLSID_CHTMLDlg;")
  cpp_quote("EXTERN_C const GUID CLSID_CHTMLPopup;")
  cpp_quote("EXTERN_C const GUID CLSID_CThreadDialogProcParam;")

  typedef enum _HTMLDlgFlag {
    HTMLDlgFlagNo = 0,
    HTMLDlgFlagOff = 0,
    HTMLDlgFlag0 = 0,
    HTMLDlgFlagYes = 1,
    HTMLDlgFlagOn = 1,
    HTMLDlgFlag1 = 1,
    HTMLDlgFlagNotSet = -1,
    HTMLDlgFlag_Max = 0x7FFFFFFF
  } HTMLDlgFlag;

  typedef enum _HTMLDlgBorder {
    HTMLDlgBorderThin = 0,
    HTMLDlgBorderThick = 0x40000,
    HTMLDlgBorder_Max = 0x7FFFFFFF
  } HTMLDlgBorder;

  typedef enum _HTMLDlgEdge {
    HTMLDlgEdgeSunken = 0,
    HTMLDlgEdgeRaised = 16,
    HTMLDlgEdge_Max = 0x7FFFFFFF
  } HTMLDlgEdge;

  typedef enum _HTMLDlgCenter {
    HTMLDlgCenterNo = 0,
    HTMLDlgCenterOff = 0,
    HTMLDlgCenter0 = 0,
    HTMLDlgCenterYes = 1,
    HTMLDlgCenterOn = 1,
    HTMLDlgCenter1 = 1,
    HTMLDlgCenterParent = 1,
    HTMLDlgCenterDesktop = 2,
    HTMLDlgCenter_Max = 0x7FFFFFFF
  } HTMLDlgCenter;

  typedef enum _HTMLAppFlag {
    HTMLAppFlagNo = 0,
    HTMLAppFlagOff = 0,
    HTMLAppFlag0 = 0,
    HTMLAppFlagYes = 1,
    HTMLAppFlagOn = 1,
    HTMLAppFlag1 = 1,
    HTMLAppFlag_Max = 0x7FFFFFFF
  } HTMLAppFlag;

  typedef enum _HTMLMinimizeFlag {
    HTMLMinimizeFlagNo = 0,
    HTMLMinimizeFlagYes = 0x20000,
    HTMLMinimizeFlag_Max = 0x7FFFFFFF
  } HTMLMinimizeFlag;

  typedef enum _HTMLMaximizeFlag {
    HTMLMaximizeFlagNo = 0,
    HTMLMaximizeFlagYes = 0x10000,
    HTMLMaximizeFlag_Max = 0x7FFFFFFF
  } HTMLMaximizeFlag;

  typedef enum _HTMLCaptionFlag {
    HTMLCaptionFlagNo = 0,
    HTMLCaptionFlagYes = 0xc00000,
    HTMLCaptionFlag_Max = 0x7FFFFFFF
  } HTMLCaptionFlag;

  typedef enum _HTMLSysMenuFlag {
    HTMLSysMenuFlagNo = 0,
    HTMLSysMenuFlagYes = 0x80000,
    HTMLSysMenuFlag_Max = 0x7FFFFFFF
  } HTMLSysMenuFlag;

  typedef enum _HTMLBorder {
    HTMLBorderNone = 0,
    HTMLBorderThick = 0x40000,
    HTMLBorderDialog = 0x400000,
    HTMLBorderThin = 0x800000,
    HTMLBorder_Max = 0x7FFFFFFF
  } HTMLBorder;

  typedef enum _HTMLBorderStyle {
    HTMLBorderStyleNormal = 0,
    HTMLBorderStyleRaised = 0x100,
    HTMLBorderStyleSunken = 0x200,
    HTMLBorderStylecombined = 0x300,
    HTMLBorderStyleStatic = 0x20000,
    HTMLBorderStyle_Max = 0x7FFFFFFF
  } HTMLBorderStyle;

  typedef enum _HTMLWindowState {
    HTMLWindowStateNormal = 1,
    HTMLWindowStateMaximize = 3,
    HTMLWindowStateMinimize = 6,
    HTMLWindowState_Max = 0x7FFFFFFF
  } HTMLWindowState;

  typedef enum _BEHAVIOR_EVENT {
    BEHAVIOREVENT_FIRST = 0,
    BEHAVIOREVENT_CONTENTREADY = 0,
    BEHAVIOREVENT_DOCUMENTREADY = 1,
    BEHAVIOREVENT_APPLYSTYLE = 2,
    BEHAVIOREVENT_DOCUMENTCONTEXTCHANGE = 3,
    BEHAVIOREVENT_CONTENTSAVE = 4,
    BEHAVIOREVENT_LAST = 4,
    BEHAVIOR_EVENT_Max = 0x7FFFFFFF
  } BEHAVIOR_EVENT;

  typedef enum _BEHAVIOR_EVENT_FLAGS {
    BEHAVIOREVENTFLAGS_BUBBLE = 1,
    BEHAVIOREVENTFLAGS_STANDARDADDITIVE = 2,
    BEHAVIOR_EVENT_FLAGS_Max = 0x7FFFFFFF
  } BEHAVIOR_EVENT_FLAGS;

  typedef enum _BEHAVIOR_RENDER_INFO {
    BEHAVIORRENDERINFO_BEFOREBACKGROUND = 0x1,
    BEHAVIORRENDERINFO_AFTERBACKGROUND = 0x2,
    BEHAVIORRENDERINFO_BEFORECONTENT = 0x4,
    BEHAVIORRENDERINFO_AFTERCONTENT = 0x8,
    BEHAVIORRENDERINFO_AFTERFOREGROUND = 0x000020,
    BEHAVIORRENDERINFO_ABOVECONTENT = 0x000028,
    BEHAVIORRENDERINFO_ALLLAYERS = 0x0000ff,
    BEHAVIORRENDERINFO_DISABLEBACKGROUND = 0x000100,
    BEHAVIORRENDERINFO_DISABLENEGATIVEZ = 0x000200,
    BEHAVIORRENDERINFO_DISABLECONTENT = 0x000400,
    BEHAVIORRENDERINFO_DISABLEPOSITIVEZ = 0x000800,
    BEHAVIORRENDERINFO_DISABLEALLLAYERS = 0x000f00,
    BEHAVIORRENDERINFO_HITTESTING = 0x001000,
    BEHAVIORRENDERINFO_SURFACE = 0x100000,
    BEHAVIORRENDERINFO_3DSURFACE = 0x200000,
    BEHAVIOR_RENDER_INFO_Max = 0x7FFFFFFF
  } BEHAVIOR_RENDER_INFO;

  typedef enum _BEHAVIOR_RELATION {
    BEHAVIOR_FIRSTRELATION = 0,
    BEHAVIOR_SAMEELEMENT = 0,
    BEHAVIOR_PARENT = 1,
    BEHAVIOR_CHILD = 2,
    BEHAVIOR_SIBLING = 3,
    BEHAVIOR_LASTRELATION = 3,
    BEHAVIOR_RELATION_Max = 0x7FFFFFFF
  } BEHAVIOR_RELATION;

  typedef enum _BEHAVIOR_LAYOUT_INFO {
    BEHAVIORLAYOUTINFO_FULLDELEGATION = 0x01,
    BEHAVIORLAYOUTINFO_MODIFYNATURAL = 0x02,
    BEHAVIORLAYOUTINFO_MAPSIZE = 0x04,
    BEHAVIOR_LAYOUT_INFO_Max = 0x7FFFFFFF
  } BEHAVIOR_LAYOUT_INFO;

  typedef enum _BEHAVIOR_LAYOUT_MODE {
    BEHAVIORLAYOUTMODE_NATURAL = 0x0001,
    BEHAVIORLAYOUTMODE_MINWIDTH = 0x0002,
    BEHAVIORLAYOUTMODE_MAXWIDTH = 0x0004,
    BEHAVIORLAYOUTMODE_MEDIA_RESOLUTION = 0x4000,
    BEHAVIORLAYOUTMODE_FINAL_PERCENT = 0x8000,
    BEHAVIOR_LAYOUT_MODE_Max = 0x7FFFFFFF
  } BEHAVIOR_LAYOUT_MODE;

  typedef enum _ELEMENTDESCRIPTOR_FLAGS {
    ELEMENTDESCRIPTORFLAGS_LITERAL = 1,
    ELEMENTDESCRIPTORFLAGS_NESTED_LITERAL = 2,
    ELEMENTDESCRIPTOR_FLAGS_Max = 0x7FFFFFFF
  } ELEMENTDESCRIPTOR_FLAGS;

  typedef enum _ELEMENTNAMESPACE_FLAGS {
    ELEMENTNAMESPACEFLAGS_ALLOWANYTAG = 0x1,
    ELEMENTNAMESPACEFLAGS_QUERYFORUNKNOWNTAGS = 0x2,
    ELEMENTNAMESPACE_FLAGS_Max = 0x7FFFFFFF
  } ELEMENTNAMESPACE_FLAGS;

  typedef enum _VIEW_OBJECT_ALPHA_MODE {
    VIEW_OBJECT_ALPHA_MODE_IGNORE = 0,
    VIEW_OBJECT_ALPHA_MODE_PREMULTIPLIED = 1,
    VIEW_OBJECT_ALPHA_MODE_Max = 0x7FFFFFFF
  } VIEW_OBJECT_ALPHA_MODE;

  typedef enum _VIEW_OBJECT_COMPOSITION_MODE {
    VIEW_OBJECT_COMPOSITION_MODE_LEGACY = 0,
    VIEW_OBJECT_COMPOSITION_MODE_SURFACEPRESENTER = 1,
    VIEW_OBJECT_COMPOSITION_MODE_Max = 0x7FFFFFFF
  } VIEW_OBJECT_COMPOSITION_MODE;

  [object, pointer_default (unique), uuid (3050f3ed-98b5-11cf-bb82-00aa00bdce0b)]
  interface ICSSFilterSite : IUnknown {
    HRESULT GetElement ([retval, out] IHTMLElement **Element);
    HRESULT FireOnFilterChangeEvent ();
  };

  [object, pointer_default (unique), uuid (3050f3ec-98b5-11cf-bb82-00aa00bdce0b)]
  interface ICSSFilter : IUnknown {
    HRESULT SetSite ([in] ICSSFilterSite *pSink);
    HRESULT OnAmbientPropertyChange ([in] LONG dispid);
  };

  [object, pointer_default (unique), uuid (c81984c4-74c8-11d2-baa9-00c04fc2040e)] 
  interface ISecureUrlHost : IUnknown {
    HRESULT ValidateSecureUrl ([out] BOOL *pfAllow,[in] OLECHAR *pchUrlInQuestion,[in] DWORD dwFlags);
  };

  [object, pointer_default (unique), uuid (3050f4a0-98b5-11cf-bb82-00aa00bdce0b)] interface IMarkupServices : IUnknown {
    HRESULT CreateMarkupPointer ([out] IMarkupPointer **ppPointer);
    HRESULT CreateMarkupContainer ([out] IMarkupContainer **ppMarkupContainer);
    HRESULT CreateElement ([in] ELEMENT_TAG_ID tagID,[in] OLECHAR *pchAttributes,[out] IHTMLElement **ppElement);
    HRESULT CloneElement ([in] IHTMLElement *pElemCloneThis,[out] IHTMLElement **ppElementTheClone);
    HRESULT InsertElement ([in] IHTMLElement *pElementInsert,[in] IMarkupPointer *pPointerStart,[in] IMarkupPointer *pPointerFinish);
    HRESULT RemoveElement ([in] IHTMLElement *pElementRemove);
    HRESULT Remove ([in] IMarkupPointer *pPointerStart,[in] IMarkupPointer *pPointerFinish);
    HRESULT Copy ([in] IMarkupPointer *pPointerSourceStart,[in] IMarkupPointer *pPointerSourceFinish,[in] IMarkupPointer *pPointerTarget);
    HRESULT Move ([in] IMarkupPointer *pPointerSourceStart,[in] IMarkupPointer *pPointerSourceFinish,[in] IMarkupPointer *pPointerTarget);
    HRESULT InsertText ([in] OLECHAR *pchText,[in] long cch,[in] IMarkupPointer *pPointerTarget);
    HRESULT ParseString ([in] OLECHAR *pchHTML,[in] DWORD dwFlags,[out] IMarkupContainer **ppContainerResult,[in] IMarkupPointer *ppPointerStart,[in] IMarkupPointer *ppPointerFinish);
    HRESULT ParseGlobal ([in] HGLOBAL hglobalHTML,[in] DWORD dwFlags,[out] IMarkupContainer **ppContainerResult,[in] IMarkupPointer *pPointerStart,[in] IMarkupPointer *pPointerFinish);
    HRESULT IsScopedElement ([in] IHTMLElement *pElement,[out] BOOL *pfScoped);
    HRESULT GetElementTagId ([in] IHTMLElement *pElement,[out] ELEMENT_TAG_ID *ptagId);
    HRESULT GetTagIDForName ([in] BSTR bstrName,[out] ELEMENT_TAG_ID *ptagId);
    HRESULT GetNameForTagID ([in] ELEMENT_TAG_ID tagId,[out] BSTR *pbstrName);
    HRESULT MovePointersToRange ([in] IHTMLTxtRange *pIRange,[in] IMarkupPointer *pPointerStart,[in] IMarkupPointer *pPointerFinish);
    HRESULT MoveRangeToPointers ([in] IMarkupPointer *pPointerStart,[in] IMarkupPointer *pPointerFinish,[in] IHTMLTxtRange *pIRange);
    HRESULT BeginUndoUnit ([in] OLECHAR *pchTitle);
    HRESULT EndUndoUnit ();
  };

  [object, pointer_default (unique), uuid (3050f682-98b5-11cf-bb82-00aa00bdce0b)]
  interface IMarkupServices2 : IMarkupServices {
    HRESULT ParseGlobalEx ([in] HGLOBAL hglobalHTML,[in] DWORD dwFlags,[in] IMarkupContainer *pContext,[out] IMarkupContainer **ppContainerResult,[in] IMarkupPointer *pPointerStart,[in] IMarkupPointer *pPointerFinish);
    HRESULT ValidateElements ([in] IMarkupPointer *pPointerStart,[in] IMarkupPointer *pPointerFinish,[in] IMarkupPointer *pPointerTarget,[in, out] IMarkupPointer *pPointerStatus,[out] IHTMLElement **ppElemFailBottom,[out] IHTMLElement **ppElemFailTop);
    HRESULT SaveSegmentsToClipboard ([in] ISegmentList *pSegmentList,[in] DWORD dwFlags);
  };
  [object, pointer_default (unique), uuid (3050f5f9-98b5-11cf-bb82-00aa00bdce0b)] interface IMarkupContainer : IUnknown {
    HRESULT OwningDoc ([out] IHTMLDocument2 **ppDoc);
  };

  [object, pointer_default (unique), uuid (3050f648-98b5-11cf-bb82-00aa00bdce0b)]
  interface IMarkupContainer2 : IMarkupContainer {
    HRESULT CreateChangeLog ([in] IHTMLChangeSink *pChangeSink,[out] IHTMLChangeLog **ppChangeLog,[in] BOOL fForward,[in] BOOL fBackward);
    HRESULT RegisterForDirtyRange ([in] IHTMLChangeSink *pChangeSink,[out] DWORD *pdwCookie);
    HRESULT UnRegisterForDirtyRange ([in] DWORD dwCookie);
    HRESULT GetAndClearDirtyRange ([in] DWORD dwCookie,[in] IMarkupPointer *pIPointerBegin,[in] IMarkupPointer *pIPointerEnd);
    long GetVersionNumber ();
    HRESULT GetMasterElement ([out] IHTMLElement **ppElementMaster);
  };

  [object, pointer_default (unique), uuid (3050f6e0-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLChangePlayback : IUnknown {
    HRESULT ExecChange ([in] BYTE *pbRecord,[in] BOOL fForward);
  };

  [object, pointer_default (unique), uuid (3050f49f-98b5-11cf-bb82-00aa00bdce0b)]
  interface IMarkupPointer : IUnknown {
    HRESULT OwningDoc ([out] IHTMLDocument2 **ppDoc);
    HRESULT Gravity ([out] POINTER_GRAVITY *pGravity);
    HRESULT SetGravity ([in] POINTER_GRAVITY Gravity);
    HRESULT Cling ([out] BOOL *pfCling);
    HRESULT SetCling ([in] BOOL fCLing);
    HRESULT Unposition ();
    HRESULT IsPositioned ([out] BOOL *pfPositioned);
    HRESULT GetContainer ([out] IMarkupContainer **ppContainer);
    HRESULT MoveAdjacentToElement ([in] IHTMLElement *pElement,[in] ELEMENT_ADJACENCY eAdj);
    HRESULT MoveToPointer ([in] IMarkupPointer *pPointer);
    HRESULT MoveToContainer ([in] IMarkupContainer *pContainer,[in] BOOL fAtStart);
    HRESULT Left ([in] BOOL fMove,[out] MARKUP_CONTEXT_TYPE *pContext,[out] IHTMLElement **ppElement,[in, out] long *pcch,[out, size_is (*pcch)] OLECHAR *pchText);
    HRESULT Right ([in] BOOL fMove,[out] MARKUP_CONTEXT_TYPE *pContext,[out] IHTMLElement **ppElement,[in, out] long *pcch,[out, size_is (*pcch)] OLECHAR *pchText);
    HRESULT CurrentScope ([out] IHTMLElement **ppElemCurrent);
    HRESULT IsLeftOf ([in] IMarkupPointer *pPointerThat,[out] BOOL *pfResult);
    HRESULT IsLeftOfOrEqualTo ([in] IMarkupPointer *pPointerThat,[out] BOOL *pfResult);
    HRESULT IsRightOf ([in] IMarkupPointer *pPointerThat,[out] BOOL *pfResult);
    HRESULT IsRightOfOrEqualTo ([in] IMarkupPointer *pPointerThat,[out] BOOL *pfResult);
    HRESULT IsEqualTo ([in] IMarkupPointer *pPointerThat,[out] BOOL *pfAreEqual);
    HRESULT MoveUnit ([in] MOVEUNIT_ACTION muAction);
    HRESULT FindText ([in, string] OLECHAR *pchFindText,[in] DWORD dwFlags,[in] IMarkupPointer *pIEndMatch,[in] IMarkupPointer *pIEndSearch);
  };

  [object, pointer_default (unique), uuid (3050f675-98b5-11cf-bb82-00aa00bdce0b)]
  interface IMarkupPointer2 : IMarkupPointer {
    HRESULT IsAtWordBreak ([out] BOOL *pfAtBreak);
    HRESULT GetMarkupPosition ([out] long *plMP);
    HRESULT MoveToMarkupPosition ([in] IMarkupContainer *pContainer,[in] long lMP);
    HRESULT MoveUnitBounded ([in] MOVEUNIT_ACTION muAction,[in] IMarkupPointer *pIBoundary);
    HRESULT IsInsideURL ([in] IMarkupPointer *pRight,[out] BOOL *pfResult);
    HRESULT MoveToContent ([in] IHTMLElement *pIElement,[in] BOOL fAtStart);
  };
  [object, pointer_default (unique), uuid (3050f5fa-98b5-11cf-bb82-00aa00bdce0b)] interface IMarkupTextFrags : IUnknown {
    HRESULT GetTextFragCount ([out] long *pcFrags);
    HRESULT GetTextFrag ([in] long iFrag,[out] BSTR *pbstrFrag,[in] IMarkupPointer *pPointerFrag);
    HRESULT RemoveTextFrag ([in] long iFrag);
    HRESULT InsertTextFrag ([in] long iFrag,[in] BSTR bstrInsert,[in] IMarkupPointer *pPointerInsert);
    HRESULT FindTextFragFromMarkupPointer ([in] IMarkupPointer *pPointerFind,[out] long *piFrag,[out] BOOL *pfFragFound);
  };

  [object, pointer_default (unique), uuid (3050f649-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLChangeLog : IUnknown {
    HRESULT GetNextChange ([in] BYTE *pbBuffer,[in] long nBufferSize,[out] long *pnRecordLength);
  };

  [object, pointer_default (unique), uuid (3050f64a-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLChangeSink : IUnknown {
    HRESULT Notify ();
  };

  [object, pointer_default (unique), uuid (E4E23071-4d07-11d2-AE76-0080c73bc199)]
  interface IXMLGenericParse : IUnknown {
    HRESULT SetGenericParse ([in] VARIANT_BOOL fDoGeneric);
  };

  [object, pointer_default (unique), uuid (3050f6a0-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLEditHost : IUnknown {
    HRESULT SnapRect ([in] IHTMLElement *pIElement,[in, out] RECT *prcNew,[in] ELEMENT_CORNER eHandle);
  };

  [object, pointer_default (unique), uuid (3050f848-98b5-11cf-bb82-00aa00bdce0d)]
  interface IHTMLEditHost2 : IHTMLEditHost {
    HRESULT PreDrag ();
  };

  [object, pointer_default (unique), uuid (3050f683-98b5-11cf-bb82-00aa00bdce0b)]
  interface ISegment : IUnknown {
    HRESULT GetPointers ([in] IMarkupPointer *pIStart,[in] IMarkupPointer *pIEnd);
  };

  [object, pointer_default (unique), uuid (3050f692-98b5-11cf-bb82-00aa00bdce0b)]
  interface ISegmentListIterator : IUnknown {
    HRESULT Current ([out] ISegment **ppISegment);
    HRESULT First ();
    HRESULT IsDone ();
    HRESULT Advance ();
  };

  [object, pointer_default (unique), uuid (3050f605-98b5-11cf-bb82-00aa00bdce0b)]
  interface ISegmentList : IUnknown {
    HRESULT CreateIterator ([out] ISegmentListIterator **ppIIter);
    HRESULT GetType ([out] SELECTION_TYPE *peType);
    HRESULT IsEmpty ([out] BOOL *pfEmpty);
  };

  [object, pointer_default (unique), uuid (3050f6c1-98b5-11cf-bb82-00aa00bdce0b)]
  interface ISequenceNumber : IUnknown {
    HRESULT GetSequenceNumber ([in] long nCurrent,[out] long *pnNew);
  };

  [object, pointer_default (unique), uuid (3050f6ca-98b5-11cf-bb82-00aa00bdce0b)]
  interface IIMEServices : IUnknown {
    HRESULT GetActiveIMM ([out] IActiveIMMApp **ppActiveIMM);
  };

  [object, pointer_default (unique), uuid (3050f604-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLCaret : IUnknown {
    HRESULT MoveCaretToPointer ([in] IDisplayPointer *pDispPointer,[in] BOOL fScrollIntoView,[in] CARET_DIRECTION eDir);
    HRESULT MoveCaretToPointerEx ([in] IDisplayPointer *pDispPointer,[in] BOOL fVisible,[in] BOOL fScrollIntoView,[in] CARET_DIRECTION eDir);
    HRESULT MoveMarkupPointerToCaret ([in] IMarkupPointer *pIMarkupPointer);
    HRESULT MoveDisplayPointerToCaret ([in] IDisplayPointer *pDispPointer);
    HRESULT IsVisible ([out] BOOL *pIsVisible);
    HRESULT Show ([in] BOOL fScrollIntoView);
    HRESULT Hide ();
    HRESULT InsertText ([in] OLECHAR *pText,[in] LONG lLen);
    HRESULT ScrollIntoView ();
    HRESULT GetLocation ([out] POINT *pPoint,[in] BOOL fTranslate);
    HRESULT GetCaretDirection ([out] CARET_DIRECTION *peDir);
    HRESULT SetCaretDirection ([in] CARET_DIRECTION eDir);
  };

  [object, pointer_default (unique), uuid (3050f606-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHighlightRenderingServices : IUnknown {
    HRESULT AddSegment ([in] IDisplayPointer *pDispPointerStart,[in] IDisplayPointer *pDispPointerEnd,[in] IHTMLRenderStyle *pIRenderStyle,[out] IHighlightSegment **ppISegment);
    HRESULT MoveSegmentToPointers ([in] IHighlightSegment *pISegment,[in] IDisplayPointer *pDispPointerStart,[in] IDisplayPointer *pDispPointerEnd);
    HRESULT RemoveSegment ([in] IHighlightSegment *pISegment);
  };

  [object, pointer_default (unique), uuid (3050f699-98b5-11cf-bb82-00aa00bdce0b)]
  interface ISelectionServicesListener : IUnknown {
    HRESULT BeginSelectionUndo ();
    HRESULT EndSelectionUndo ();
    HRESULT OnSelectedElementExit ([in] IMarkupPointer *pIElementStart,[in] IMarkupPointer *pIElementEnd,[in] IMarkupPointer *pIElementContentStart,[in] IMarkupPointer *pIElementContentEnd);
    HRESULT OnChangeType ([in] SELECTION_TYPE eType,[in] ISelectionServicesListener *pIListener);
    HRESULT GetTypeDetail ([out] BSTR *pTypeDetail);
  };

  [object, pointer_default (unique), uuid (3050f684-98b5-11cf-bb82-00aa00bdce0b)]
  interface ISelectionServices : IUnknown {
    HRESULT SetSelectionType ([in] SELECTION_TYPE eType,[in] ISelectionServicesListener *pIListener);
    HRESULT GetMarkupContainer ([out] IMarkupContainer **ppIContainer);
    HRESULT AddSegment ([in] IMarkupPointer *pIStart,[in] IMarkupPointer *pIEnd,[out] ISegment **ppISegmentAdded);
    HRESULT AddElementSegment ([in] IHTMLElement *pIElement,[out] IElementSegment **ppISegmentAdded);
    HRESULT RemoveSegment ([in] ISegment *pISegment);
    HRESULT GetSelectionServicesListener ([out] ISelectionServicesListener **ppISelectionServicesListener);
  };

  [object, pointer_default (unique), uuid (3050f68f-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementSegment : ISegment {
    HRESULT GetElement ([out] IHTMLElement **ppIElement);
    HRESULT SetPrimary ([in] BOOL fPrimary);
    HRESULT IsPrimary ([out] BOOL *pfPrimary);
  };

  [object, pointer_default (unique), uuid (3050f690-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHighlightSegment : ISegment {
  };

  [object, pointer_default (unique), uuid (3050f662-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLEditDesigner : IUnknown {
    HRESULT PreHandleEvent ([in] DISPID inEvtDispId,[in] IHTMLEventObj *pIEventObj);
    HRESULT PostHandleEvent ([in] DISPID inEvtDispId,[in] IHTMLEventObj *pIEventObj);
    HRESULT TranslateAccelerator ([in] DISPID inEvtDispId,[in] IHTMLEventObj *pIEventObj);
    HRESULT PostEditorEventNotify ([in] DISPID inEvtDispId,[in] IHTMLEventObj *pIEventObj);
  };

  [object, pointer_default (unique), uuid (3050f663-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLEditServices : IUnknown {
    HRESULT AddDesigner ([in] IHTMLEditDesigner *pIDesigner);
    HRESULT RemoveDesigner ([in] IHTMLEditDesigner *pIDesigner);
    HRESULT GetSelectionServices ([in] IMarkupContainer *pIContainer,[out] ISelectionServices **ppSelSvc);
    HRESULT MoveToSelectionAnchor ([in] IMarkupPointer *pIStartAnchor);
    HRESULT MoveToSelectionEnd ([in] IMarkupPointer *pIEndAnchor);
    HRESULT SelectRange ([in] IMarkupPointer *pStart,[in] IMarkupPointer *pEnd,[in] SELECTION_TYPE eType);
  };

  [object, pointer_default (unique), uuid (3050f812-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLEditServices2 : IHTMLEditServices {
    HRESULT MoveToSelectionAnchorEx ([in] IDisplayPointer *pIStartAnchor);
    HRESULT MoveToSelectionEndEx ([in] IDisplayPointer *pIEndAnchor);
    HRESULT FreezeVirtualCaretPos ([in] BOOL fReCompute);
    HRESULT UnFreezeVirtualCaretPos ([in] BOOL fReset);
  };

  [object, pointer_default (unique), uuid (3050f7e2-98b5-11cf-bb82-00aa00bdce0b)]
  interface ILineInfo : IUnknown {
    [propget, id (DISPID_ILINEINFO_X)] HRESULT x ([retval, out] long *p);
    [propget, id (DISPID_ILINEINFO_BASELINE)] HRESULT baseLine ([retval, out] long *p);
    [propget, id (DISPID_ILINEINFO_TEXTDESCENT)] HRESULT textDescent ([retval, out] long *p);
    [propget, id (DISPID_ILINEINFO_TEXTHEIGHT)] HRESULT textHeight ([retval, out] long *p);
    [propget, id (DISPID_ILINEINFO_LINEDIRECTION)] HRESULT lineDirection ([retval, out] LONG *p);
  };

  [object, pointer_default (unique), uuid (3050f6c3-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLComputedStyle : IUnknown {
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_BOLD)] HRESULT bold ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_ITALIC)] HRESULT italic ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_UNDERLINE)] HRESULT underline ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_OVERLINE)] HRESULT overline ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_STRIKEOUT)] HRESULT strikeOut ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_SUBSCRIPT)] HRESULT subScript ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_SUPERSCRIPT)] HRESULT superScript ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_EXPLICITFACE)] HRESULT explicitFace ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_FONTWEIGHT)] HRESULT fontWeight ([retval, out] long *p);
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_FONTSIZE)] HRESULT fontSize ([retval, out] long *p);
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_FONTNAME)] HRESULT fontName ([retval, out] TCHAR *p);
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_HASBGCOLOR)] HRESULT hasBgColor ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_TEXTCOLOR)] HRESULT textColor ([retval, out] DWORD *p);
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_BACKGROUNDCOLOR)] HRESULT backgroundColor ([retval, out] DWORD *p);
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_PREFORMATTED)] HRESULT preFormatted ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_DIRECTION)] HRESULT direction ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_BLOCKDIRECTION)] HRESULT blockDirection ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLCOMPUTEDSTYLE_OL)] HRESULT OL ([retval, out] VARIANT_BOOL *p);
    HRESULT IsEqual ([in] IHTMLComputedStyle *pComputedStyle,[out] VARIANT_BOOL *pfEqual);
  };

  [object, pointer_default (unique), uuid (3050f69e-98b5-11cf-bb82-00aa00bdce0b)]
  interface IDisplayPointer : IUnknown {
    HRESULT MoveToPoint ([in] POINT ptPoint,[in] COORD_SYSTEM eCoordSystem,[in] IHTMLElement *pElementContext,[in] DWORD dwHitTestOptions,[out] DWORD *pdwHitTestResults);
    HRESULT MoveUnit ([in] DISPLAY_MOVEUNIT eMoveUnit,[in] LONG lXPos);
    HRESULT PositionMarkupPointer ([in] IMarkupPointer *pMarkupPointer);
    HRESULT MoveToPointer ([in] IDisplayPointer *pDispPointer);
    HRESULT SetPointerGravity ([in] POINTER_GRAVITY eGravity);
    HRESULT GetPointerGravity ([out] POINTER_GRAVITY *peGravity);
    HRESULT SetDisplayGravity ([in] DISPLAY_GRAVITY eGravity);
    HRESULT GetDisplayGravity ([out] DISPLAY_GRAVITY *peGravity);
    HRESULT IsPositioned ([out] BOOL *pfPositioned);
    HRESULT Unposition ();
    HRESULT IsEqualTo ([in] IDisplayPointer *pDispPointer,[out] BOOL *pfIsEqual);
    HRESULT IsLeftOf ([in] IDisplayPointer *pDispPointer,[out] BOOL *pfIsLeftOf);
    HRESULT IsRightOf ([in] IDisplayPointer *pDispPointer,[out] BOOL *pfIsRightOf);
    HRESULT IsAtBOL ([out] BOOL *pfBOL);
    HRESULT MoveToMarkupPointer ([in] IMarkupPointer *pPointer,[in] IDisplayPointer *pDispLineContext);
    HRESULT ScrollIntoView ();
    HRESULT GetLineInfo ([out] ILineInfo **ppLineInfo);
    HRESULT GetFlowElement ([out] IHTMLElement **ppLayoutElement);
    HRESULT QueryBreaks ([out] DWORD *pdwBreaks);
  };

  [object, pointer_default (unique), uuid (3050f69d-98b5-11cf-bb82-00aa00bdce0b)]
  interface IDisplayServices : IUnknown {
    HRESULT CreateDisplayPointer ([out] IDisplayPointer **ppDispPointer);
    HRESULT TransformRect ([in, out] RECT *pRect,[in] COORD_SYSTEM eSource,[in] COORD_SYSTEM eDestination,[in] IHTMLElement *pIElement);
    HRESULT TransformPoint ([in, out] POINT *pPoint,[in] COORD_SYSTEM eSource,[in] COORD_SYSTEM eDestination,[in] IHTMLElement *pIElement);
    HRESULT GetCaret ([out] IHTMLCaret **ppCaret);
    HRESULT GetComputedStyle ([in] IMarkupPointer *pPointer,[out] IHTMLComputedStyle **ppComputedStyle);
    HRESULT ScrollRectIntoView ([in] IHTMLElement *pIElement,[in] RECT rect);
    HRESULT HasFlowLayout ([in] IHTMLElement *pIElement,[out] BOOL *pfHasFlowLayout);
  };

  [object, pointer_default (unique), uuid (3050f81a-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHtmlDlgSafeHelper : IDispatch {
    [id (DISPID_IHTMLDLGSAFEHELPER_CHOOSECOLORDLG)] HRESULT choosecolordlg ([optional, in] VARIANT initColor,[retval, out] VARIANT *rgbColor);
    [id (DISPID_IHTMLDLGSAFEHELPER_GETCHARSET)] HRESULT getCharset ([in] BSTR fontName,[retval, out] VARIANT *charset);
    [propget, id (DISPID_IHTMLDLGSAFEHELPER_FONTS)] HRESULT Fonts ([retval, out] IDispatch **p);
    [propget, id (DISPID_IHTMLDLGSAFEHELPER_BLOCKFORMATS)] HRESULT BlockFormats ([retval, out] IDispatch **p);
  };

  [object, pointer_default (unique), uuid (3050f830-98b5-11cf-bb82-00aa00bdce0b)]
  interface IBlockFormats : IDispatch {
    [id (DISPID_IBLOCKFORMATS__NEWENUM), propget, restricted] HRESULT _NewEnum ([retval, out] IUnknown **p);
    [id (DISPID_IBLOCKFORMATS_COUNT), propget] HRESULT Count ([retval, out] long *p);
    [id (DISPID_IBLOCKFORMATS_ITEM)] HRESULT Item ([in] VARIANT *pvarIndex,[retval, out] BSTR *pbstrBlockFormat);
  };
  
  [object, pointer_default (unique), uuid (3050f839-98b5-11cf-bb82-00aa00bdce0b)]
  interface IFontNames : IDispatch {
    [id (DISPID_IFONTNAMES__NEWENUM), propget, restricted] HRESULT _NewEnum ([retval, out] IUnknown **p);
    [id (DISPID_IFONTNAMES_COUNT), propget] HRESULT Count ([retval, out] long *p);
    [id (DISPID_IFONTNAMES_ITEM)] HRESULT Item ([in] VARIANT *pvarIndex,[retval, out] BSTR *pbstrFontName);
  };
  
  [noncreatable, uuid (3050f819-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HtmlDlgSafeHelper {
    [default] interface IHtmlDlgSafeHelper;
  };

  [noncreatable, uuid (3050f831-98b5-11cf-bb82-00aa00bdce0b)]
  coclass BlockFormats {
    [default] interface IBlockFormats;
  };

  [noncreatable, uuid (3050f83a-98b5-11cf-bb82-00aa00bdce0b)]
  coclass FontNames {
    [default] interface IFontNames;
  };

  [object, local, uuid (30510808-98b5-11cf-bb82-00aa00bdce0b), pointer_default (unique)]
  interface IDeveloperConsoleMessageReceiver : IUnknown {
    HRESULT Write ([in] LPCWSTR source,[in] DEV_CONSOLE_MESSAGE_LEVEL level,[in] int messageId,[in] LPCWSTR messageText);
    HRESULT WriteWithUrl ([in] LPCWSTR source,[in] DEV_CONSOLE_MESSAGE_LEVEL level,[in] int messageId,[in] LPCWSTR messageText,[in] LPCWSTR fileUrl);
    HRESULT WriteWithUrlAndLine ([in] LPCWSTR source,[in] DEV_CONSOLE_MESSAGE_LEVEL level,[in] int messageId,[in] LPCWSTR messageText,[in] LPCWSTR fileUrl,[in] ULONG line);
    HRESULT WriteWithUrlLineAndColumn ([in] LPCWSTR source,[in] DEV_CONSOLE_MESSAGE_LEVEL level,[in] int messageId,[in] LPCWSTR messageText,[in] LPCWSTR fileUrl,[in] ULONG line,[in] ULONG column);
  };

  [object, local, uuid (30510842-98b5-11cf-bb82-00aa00bdce0b), pointer_default (unique)]
  interface IDebugCallbackNotificationHandler : IUnknown {
    HRESULT RequestedCallbackTypes ([out] DWORD *pCallbackMask);
    HRESULT BeforeDispatchEvent ([in] IUnknown *pEvent);
    HRESULT DispatchEventComplete ([in] IUnknown *pEvent,[in] DWORD propagationStatus);
    HRESULT BeforeInvokeDomCallback ([in] IUnknown *pEvent,[in] IScriptEventHandler *pCallback,[in] DOM_EVENT_PHASE eStage,[in] DWORD propagationStatus);
    HRESULT InvokeDomCallbackComplete ([in] IUnknown *pEvent,[in] IScriptEventHandler *pCallback,[in] DOM_EVENT_PHASE eStage,[in] DWORD propagationStatus);
    HRESULT BeforeInvokeCallback ([in] SCRIPT_TIMER_TYPE eCallbackType,[in] DWORD callbackCookie,[in] IDispatch *pDispHandler,[in] ULONGLONG ullHandlerCookie,[in] BSTR functionName,[in] UINT32 line,[in] UINT32 column,[in] UINT32 cchLength,[in] IUnknown *pDebugDocumentContext);
    HRESULT InvokeCallbackComplete ([in] SCRIPT_TIMER_TYPE eCallbackType,[in] DWORD callbackCookie,[in] IDispatch *pDispHandler,[in] ULONGLONG ullHandlerCookie,[in] BSTR functionName,[in] UINT32 line,[in] UINT32 column,[in] UINT32 cchLength,[in] IUnknown *pDebugDocumentContext);
  };

  [object, pointer_default (unique), uuid (3051083a-98b5-11cf-bb82-00aa00bdce0b)]
  interface IScriptEventHandler : IUnknown {
    HRESULT FunctionName ([retval, out] BSTR *pbstrFunctionName);
    HRESULT DebugDocumentContext ([retval, out] IUnknown **ppDebugDocumentContext);
    HRESULT EventHandlerDispatch ([retval, out] IDispatch **ppDispHandler);
    HRESULT UsesCapture ([retval, out] BOOL *pfUsesCapture);
    HRESULT Cookie ([retval, out] ULONGLONG *pullCookie);
  };

  [object, pointer_default (unique), uuid (30510841-98b5-11cf-bb82-00aa00bdce0b)]
  interface IScriptEventHandlerSourceInfo : IUnknown {
    HRESULT GetSourceInfo ([out] BSTR *pbstrFunctionName,[out] UINT32 *line,[out] UINT32 *column,[out] UINT32 *cchLength);
  };

  [object, pointer_default (unique), uuid (3051083b-98b5-11cf-bb82-00aa00bdce0b)]
  interface IDOMEventRegistrationCallback : IUnknown {
    HRESULT OnDOMEventListenerAdded ([in] LPCWSTR pszEventType,[in] IScriptEventHandler *pHandler);
    HRESULT OnDOMEventListenerRemoved ([in] ULONGLONG ullCookie);
  };

  [object, pointer_default (unique), uuid (30510839-98b5-11cf-bb82-00aa00bdce0b)]
  interface IEventTarget2 : IUnknown {
    HRESULT GetRegisteredEventTypes ([retval, out] SAFEARRAY **ppEventTypeArray);
    HRESULT GetListenersForType ([in] LPCWSTR pszEventType,[retval, out] SAFEARRAY **ppEventHandlerArray);
    HRESULT RegisterForDOMEventListeners ([in] IDOMEventRegistrationCallback *pCallback);
    HRESULT UnregisterForDOMEventListeners ([in] IDOMEventRegistrationCallback *pCallback);
  };

  [hidden, uuid (3050f6bd-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface HTMLNamespaceEvents {
    properties:
    methods:
    [id (DISPID_HTMLNAMESPACEEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
  };

  [odl, oleautomation, dual, uuid (3050f6bb-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLNamespace : IDispatch {
    [id (DISPID_IHTMLNAMESPACE_NAME), propget, bindable] HRESULT name ([retval, out] BSTR *p);
    [id (DISPID_IHTMLNAMESPACE_URN), propget, bindable] HRESULT urn ([retval, out] BSTR *p);
    [id (DISPID_IHTMLNAMESPACE_TAGNAMES), propget, bindable] HRESULT tagNames ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLNAMESPACE_READYSTATE), propget, bindable] HRESULT readyState ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLNAMESPACE_ONREADYSTATECHANGE), propput, displaybind, bindable] HRESULT onreadystatechange ([in] VARIANT v);
    [id (DISPID_IHTMLNAMESPACE_ONREADYSTATECHANGE), propget, displaybind, bindable] HRESULT onreadystatechange ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLNAMESPACE_DOIMPORT)] HRESULT doImport ([in] BSTR bstrImplementationUrl);
    [id (DISPID_IHTMLNAMESPACE_ATTACHEVENT)] HRESULT attachEvent ([in] BSTR event,[in] IDispatch *pDisp,[retval, out] VARIANT_BOOL *pfResult);
    [id (DISPID_IHTMLNAMESPACE_DETACHEVENT)] HRESULT detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
  };

  [odl, oleautomation, dual, uuid (3050f6b8-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLNamespaceCollection : IDispatch {
    [id (DISPID_IHTMLNAMESPACECOLLECTION_LENGTH), propget] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLNAMESPACECOLLECTION_ITEM)] HRESULT item ([in] VARIANT index,[retval, out] IDispatch **ppNamespace);
    [id (DISPID_IHTMLNAMESPACECOLLECTION_ADD)] HRESULT add ([in] BSTR bstrNamespace,[in] BSTR bstrUrn,[optional, in] VARIANT implementationUrl,[retval, out] IDispatch **ppNamespace);
  };

  [hidden, uuid (3050f54f-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLNamespace {
    properties:
    methods:
    [id (DISPID_IHTMLNAMESPACE_NAME), propget, bindable] BSTR name ();
    [id (DISPID_IHTMLNAMESPACE_URN), propget, bindable] BSTR urn ();
    [id (DISPID_IHTMLNAMESPACE_TAGNAMES), propget, bindable] IDispatch *tagNames ();
    [id (DISPID_IHTMLNAMESPACE_READYSTATE), propget, bindable] VARIANT readyState ();
    [id (DISPID_IHTMLNAMESPACE_ONREADYSTATECHANGE), propput, displaybind, bindable] void onreadystatechange (VARIANT v);
    [id (DISPID_IHTMLNAMESPACE_ONREADYSTATECHANGE), propget, displaybind, bindable] VARIANT onreadystatechange ();
    [id (DISPID_IHTMLNAMESPACE_DOIMPORT)] void doImport ([in] BSTR bstrImplementationUrl);
    [id (DISPID_IHTMLNAMESPACE_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLNAMESPACE_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), propget, hidden] IDispatch *constructor ();
  };

  [noncreatable, uuid (3050f6bc-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLNamespace {
    [default] dispinterface DispHTMLNamespace;
    [source, default] dispinterface HTMLNamespaceEvents;
    interface IHTMLNamespace;
    interface IHTMLDOMConstructor;
  };

  [hidden, uuid (3050f550-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLNamespaceCollection {
    properties:
    methods:
    [id (DISPID_IHTMLNAMESPACECOLLECTION_LENGTH), propget] long length ();
    [id (DISPID_IHTMLNAMESPACECOLLECTION_ITEM)] IDispatch *item ([in] VARIANT index);
    [id (DISPID_IHTMLNAMESPACECOLLECTION_ADD)] IDispatch *add ([in] BSTR bstrNamespace,[in] BSTR bstrUrn,[optional, in] VARIANT implementationUrl);
    [id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), propget, hidden] IDispatch *constructor ();
  };

  [noncreatable, uuid (3050f6b9-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLNamespaceCollection {
    [default] dispinterface DispHTMLNamespaceCollection;
    interface IHTMLNamespaceCollection;
    interface IHTMLDOMConstructor;
  };

  [object, pointer_default (unique), uuid (3050f6a6-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLPainter : IUnknown {
    HRESULT Draw ([in] RECT rcBounds,[in] RECT rcUpdate,[in] LONG lDrawFlags,[in] HDC hdc,[in] LPVOID pvDrawObject);
    HRESULT OnResize ([in] SIZE size);
    HRESULT GetPainterInfo ([out] HTML_PAINTER_INFO *pInfo);
    HRESULT HitTestPoint ([in] POINT pt,[out] BOOL *pbHit,[out] LONG *plPartID);
  };

  [object, pointer_default (unique), uuid (3050f6df-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLPainterEventInfo : IUnknown {
    HRESULT GetEventInfoFlags ([out] long *plEventInfoFlags);
    HRESULT GetEventTarget ([in] IHTMLElement **ppElement);
    HRESULT SetCursor ([in] LONG lPartID);
    HRESULT StringFromPartID ([in] LONG lPartID,[out] BSTR *pbstrPart);
  };

  [object, pointer_default (unique), uuid (3050f7e3-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLPainterOverlay : IUnknown {
    HRESULT OnMove ([in] RECT rcDevice);
  };

  [object, pointer_default (unique), uuid (3050f6a7-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLPaintSite : IUnknown {
    HRESULT InvalidatePainterInfo ();
    HRESULT InvalidateRect ([in] RECT *prcInvalid);
    HRESULT InvalidateRegion ([in] HRGN rgnInvalid);
    HRESULT GetDrawInfo ([in] LONG lFlags,[out] HTML_PAINT_DRAW_INFO *pDrawInfo);
    HRESULT TransformGlobalToLocal ([in] POINT ptGlobal,[out] POINT *pptLocal);
    HRESULT TransformLocalToGlobal ([in] POINT ptLocal,[out] POINT *pptGlobal);
    HRESULT GetHitTestCookie ([out] LONG *plCookie);
  };

  [odl, oleautomation, dual, uuid (3050f6b5-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLIPrintCollection : IDispatch {
    [id (DISPID_IHTMLIPRINTCOLLECTION_LENGTH), propget, hidden] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLIPRINTCOLLECTION__NEWENUM), propget, hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLIPRINTCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] IUnknown **ppIPrint);
  };

  [object, pointer_default (unique), uuid (3050f844-98b5-11cf-bb82-00aa00bdce0b)]
  interface IEnumPrivacyRecords : IUnknown {
    HRESULT Reset ();
    HRESULT GetSize ([out] ULONG *pSize);
    HRESULT GetPrivacyImpacted ([out] BOOL *pState);
    HRESULT Next ([out] BSTR *pbstrUrl,[out] BSTR *pbstrPolicyRef,[out] LONG *pdwReserved,[out] DWORD *pdwPrivacyFlags);
  };

  [object, pointer_default (unique), uuid (30510413-98b5-11cf-bb82-00aa00bdce0b)]
  interface IWPCBlockedUrls : IUnknown {
    HRESULT GetCount ([out] DWORD *pdwCount);
    HRESULT GetUrl ([in] DWORD dwIdx,[out] BSTR *pbstrUrl);
  };

  [odl, oleautomation, dual, uuid (3051049c-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLDOMConstructorCollection : IDispatch {
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_ATTR), propget] HRESULT Attr ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_BEHAVIORURNSCOLLECTION), propget] HRESULT BehaviorUrnsCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_BOOKMARKCOLLECTION), propget] HRESULT BookmarkCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_COMPATIBLEINFO), propget] HRESULT CompatibleInfo ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_COMPATIBLEINFOCOLLECTION), propget] HRESULT CompatibleInfoCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CONTROLRANGECOLLECTION), propget] HRESULT ControlRangeCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSCURRENTSTYLEDECLARATION), propget] HRESULT CSSCurrentStyleDeclaration ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSRULELIST), propget] HRESULT CSSRuleList ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSRULESTYLEDECLARATION), propget] HRESULT CSSRuleStyleDeclaration ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSSTYLEDECLARATION), propget] HRESULT CSSStyleDeclaration ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSSTYLERULE), propget] HRESULT CSSStyleRule ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSSTYLESHEET), propget] HRESULT CSSStyleSheet ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_DATATRANSFER), propget] HRESULT DataTransfer ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_DOMIMPLEMENTATION), propget] HRESULT DOMImplementation ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_ELEMENT), propget] HRESULT Element ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_EVENT), propget] HRESULT Event ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HISTORY), propget] HRESULT History ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTCELEMENTBEHAVIORDEFAULTS), propget] HRESULT HTCElementBehaviorDefaults ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLANCHORELEMENT), propget] HRESULT HTMLAnchorElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLAREAELEMENT), propget] HRESULT HTMLAreaElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLAREASCOLLECTION), propget] HRESULT HTMLAreasCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBASEELEMENT), propget] HRESULT HTMLBaseElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBASEFONTELEMENT), propget] HRESULT HTMLBaseFontElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBGSOUNDELEMENT), propget] HRESULT HTMLBGSoundElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBLOCKELEMENT), propget] HRESULT HTMLBlockElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBODYELEMENT), propget] HRESULT HTMLBodyElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBRELEMENT), propget] HRESULT HTMLBRElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBUTTONELEMENT), propget] HRESULT HTMLButtonElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLCOLLECTION), propget] HRESULT HTMLCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLCOMMENTELEMENT), propget] HRESULT HTMLCommentElement ([retval, out] IDispatch **p);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLDDELEMENT)] HRESULT HTMLDDElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLDIVELEMENT), propget] HRESULT HTMLDivElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLDOCUMENT), propget] HRESULT HTMLDocument ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLDLISTELEMENT), propget] HRESULT HTMLDListElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLDTELEMENT), propget] HRESULT HTMLDTElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLEMBEDELEMENT), propget] HRESULT HTMLEmbedElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLFIELDSETELEMENT), propget] HRESULT HTMLFieldSetElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLFONTELEMENT), propget] HRESULT HTMLFontElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLFORMELEMENT), propget] HRESULT HTMLFormElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLFRAMEELEMENT), propget] HRESULT HTMLFrameElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLFRAMESETELEMENT), propget] HRESULT HTMLFrameSetElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLGENERICELEMENT), propget] HRESULT HTMLGenericElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLHEADELEMENT), propget] HRESULT HTMLHeadElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLHEADINGELEMENT), propget] HRESULT HTMLHeadingElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLHRELEMENT), propget] HRESULT HTMLHRElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLHTMLELEMENT), propget] HRESULT HTMLHtmlElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLIFRAMEELEMENT), propget] HRESULT HTMLIFrameElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLIMAGEELEMENT), propget] HRESULT HTMLImageElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLINPUTELEMENT), propget] HRESULT HTMLInputElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLISINDEXELEMENT), propget] HRESULT HTMLIsIndexElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLLABELELEMENT), propget] HRESULT HTMLLabelElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLLEGENDELEMENT), propget] HRESULT HTMLLegendElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLLIELEMENT), propget] HRESULT HTMLLIElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLLINKELEMENT), propget] HRESULT HTMLLinkElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLMAPELEMENT), propget] HRESULT HTMLMapElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLMARQUEEELEMENT), propget] HRESULT HTMLMarqueeElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLMETAELEMENT), propget] HRESULT HTMLMetaElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLMODELESSDIALOG), propget] HRESULT HTMLModelessDialog ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLNAMESPACEINFO), propget] HRESULT HTMLNamespaceInfo ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLNAMESPACEINFOCOLLECTION), propget] HRESULT HTMLNamespaceInfoCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLNEXTIDELEMENT), propget] HRESULT HTMLNextIdElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLNOSHOWELEMENT), propget] HRESULT HTMLNoShowElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLOBJECTELEMENT), propget] HRESULT HTMLObjectElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLOLISTELEMENT), propget] HRESULT HTMLOListElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLOPTIONELEMENT), propget] HRESULT HTMLOptionElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLPARAGRAPHELEMENT), propget] HRESULT HTMLParagraphElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLPARAMELEMENT), propget] HRESULT HTMLParamElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLPHRASEELEMENT), propget] HRESULT HTMLPhraseElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLPLUGINSCOLLECTION), propget] HRESULT HTMLPluginsCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLPOPUP), propget] HRESULT HTMLPopup ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLSCRIPTELEMENT), propget] HRESULT HTMLScriptElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLSELECTELEMENT), propget] HRESULT HTMLSelectElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLSPANELEMENT), propget] HRESULT HTMLSpanElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLSTYLEELEMENT), propget] HRESULT HTMLStyleElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLECAPTIONELEMENT), propget] HRESULT HTMLTableCaptionElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLECELLELEMENT), propget] HRESULT HTMLTableCellElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLECOLELEMENT), propget] HRESULT HTMLTableColElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLEELEMENT), propget] HRESULT HTMLTableElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLEROWELEMENT), propget] HRESULT HTMLTableRowElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLESECTIONELEMENT), propget] HRESULT HTMLTableSectionElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTEXTAREAELEMENT), propget] HRESULT HTMLTextAreaElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTEXTELEMENT), propget] HRESULT HTMLTextElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTITLEELEMENT), propget] HRESULT HTMLTitleElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLULISTELEMENT), propget] HRESULT HTMLUListElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLUNKNOWNELEMENT), propget] HRESULT HTMLUnknownElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_IMAGE), propget] HRESULT Image ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_LOCATION), propget] HRESULT Location ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_NAMEDNODEMAP), propget] HRESULT NamedNodeMap ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_NAVIGATOR), propget] HRESULT Navigator ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_NODELIST), propget] HRESULT NodeList ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_OPTION), propget] HRESULT Option ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_SCREEN), propget] HRESULT Screen ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_SELECTION), propget] HRESULT Selection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_STATICNODELIST), propget] HRESULT StaticNodeList ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_STORAGE), propget] HRESULT Storage ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_STYLESHEETLIST), propget] HRESULT StyleSheetList ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_STYLESHEETPAGE), propget] HRESULT StyleSheetPage ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_STYLESHEETPAGELIST), propget] HRESULT StyleSheetPageList ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_TEXT), propget] HRESULT Text ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_TEXTRANGE), propget] HRESULT TextRange ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_TEXTRANGECOLLECTION), propget] HRESULT TextRangeCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_TEXTRECTANGLE), propget] HRESULT TextRectangle ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_TEXTRECTANGLELIST), propget] HRESULT TextRectangleList ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_WINDOW), propget] HRESULT Window ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_XDOMAINREQUEST), propget] HRESULT XDomainRequest ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_XMLHTTPREQUEST), propget] HRESULT XMLHttpRequest ([retval, out] IDispatch **p);
  };

  [odl, oleautomation, dual, uuid (3050f216-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLDialog : IDispatch {
    [id (DISPID_IHTMLDIALOG_DIALOGTOP), propput, bindable] HRESULT dialogTop ([in] VARIANT v);
    [id (DISPID_IHTMLDIALOG_DIALOGTOP), propget, bindable] HRESULT dialogTop ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDIALOG_DIALOGLEFT), propput, bindable] HRESULT dialogLeft ([in] VARIANT v);
    [id (DISPID_IHTMLDIALOG_DIALOGLEFT), propget, bindable] HRESULT dialogLeft ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDIALOG_DIALOGWIDTH), propput, bindable] HRESULT dialogWidth ([in] VARIANT v);
    [id (DISPID_IHTMLDIALOG_DIALOGWIDTH), propget, bindable] HRESULT dialogWidth ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDIALOG_DIALOGHEIGHT), propput, bindable] HRESULT dialogHeight ([in] VARIANT v);
    [id (DISPID_IHTMLDIALOG_DIALOGHEIGHT), propget, bindable] HRESULT dialogHeight ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDIALOG_DIALOGARGUMENTS), propget] HRESULT dialogArguments ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDIALOG_MENUARGUMENTS), propget] HRESULT menuArguments ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDIALOG_RETURNVALUE), propput] HRESULT returnValue ([in] VARIANT v);
    [id (DISPID_IHTMLDIALOG_RETURNVALUE), propget] HRESULT returnValue ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDIALOG_CLOSE)] HRESULT close ();
    [id (DISPID_IHTMLDIALOG_TOSTRING)] HRESULT toString ([retval, out] BSTR *String);
  };

  [odl, oleautomation, dual, uuid (3050f5e0-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLDialog2 : IDispatch {
    [id (DISPID_IHTMLDIALOG2_STATUS), propput, hidden] HRESULT status ([in] BSTR v);
    [id (DISPID_IHTMLDIALOG2_STATUS), propget, hidden] HRESULT status ([retval, out] BSTR *p);
    [id (DISPID_IHTMLDIALOG2_RESIZABLE), propput, hidden] HRESULT resizable ([in] BSTR v);
    [id (DISPID_IHTMLDIALOG2_RESIZABLE), propget, hidden] HRESULT resizable ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (3050f388-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLDialog3 : IDispatch {
    [id (DISPID_IHTMLDIALOG3_UNADORNED), propput, hidden] HRESULT unadorned ([in] BSTR v);
    [id (DISPID_IHTMLDIALOG3_UNADORNED), propget, hidden] HRESULT unadorned ([retval, out] BSTR *p);
    [id (DISPID_IHTMLDIALOG3_DIALOGHIDE), propput] HRESULT dialogHide ([in] BSTR v);
    [id (DISPID_IHTMLDIALOG3_DIALOGHIDE), propget] HRESULT dialogHide ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (3050f5e4-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLModelessInit : IDispatch {
    [id (DISPID_IHTMLMODELESSINIT_PARAMETERS), propget] HRESULT parameters ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLMODELESSINIT_OPTIONSTRING), propget] HRESULT optionString ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLMODELESSINIT_MONIKER), propget] HRESULT moniker ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLMODELESSINIT_DOCUMENT), propget] HRESULT document ([retval, out] IUnknown **p);
  };

  [noncreatable, uuid (3050f5eb-98b5-11cf-bb82-00aa00bdce0b)]
  coclass ThreadDialogProcParam {
    [default] interface IHTMLModelessInit;
  };

  [noncreatable, uuid (3050f28a-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLDialog {
    [default] interface IHTMLDialog;
  };

  [odl, oleautomation, dual, uuid (3050f666-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLPopup : IDispatch {
    [id (DISPID_IHTMLPOPUP_SHOW)] HRESULT show ([in] long x,[in] long y,[in] long w,[in] long h,[in] VARIANT *pElement);
    [id (DISPID_IHTMLPOPUP_HIDE)] HRESULT hide ();
    [id (DISPID_IHTMLPOPUP_DOCUMENT), propget] HRESULT document ([retval, out] IHTMLDocument **p);
    [id (DISPID_IHTMLPOPUP_ISOPEN), propget] HRESULT isOpen ([retval, out] VARIANT_BOOL *p);
  };

  [hidden, uuid (3050f589-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLPopup {
    properties:
    methods:
    [id (DISPID_IHTMLPOPUP_SHOW)] void show ([in] long x,[in] long y,[in] long w,[in] long h,[in] VARIANT *pElement);
    [id (DISPID_IHTMLPOPUP_HIDE)] void hide ();
    [id (DISPID_IHTMLPOPUP_DOCUMENT), propget] IHTMLDocument *document ();
    [id (DISPID_IHTMLPOPUP_ISOPEN), propget] VARIANT_BOOL isOpen ();
    [id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), propget, hidden] IDispatch *constructor ();
  };

  [uuid (3050f667-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLPopup {
    [default] dispinterface DispHTMLPopup;
    interface IHTMLPopup;
    interface IHTMLDOMConstructor;
  };

  [odl, oleautomation, dual, uuid (3050f5ca-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLAppBehavior : IDispatch {
    [id (DISPID_IHTMLAPPBEHAVIOR_APPLICATIONNAME), propput] HRESULT applicationName ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_APPLICATIONNAME), propget] HRESULT applicationName ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_VERSION), propput] HRESULT version ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_VERSION), propget] HRESULT version ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_ICON), propput] HRESULT icon ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_ICON), propget] HRESULT icon ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_SINGLEINSTANCE), propput] HRESULT singleInstance ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_SINGLEINSTANCE), propget] HRESULT singleInstance ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_MINIMIZEBUTTON), propput] HRESULT minimizeButton ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_MINIMIZEBUTTON), propget] HRESULT minimizeButton ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_MAXIMIZEBUTTON), propput] HRESULT maximizeButton ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_MAXIMIZEBUTTON), propget] HRESULT maximizeButton ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_BORDER), propput] HRESULT border ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_BORDER), propget] HRESULT border ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_BORDERSTYLE), propput] HRESULT borderStyle ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_BORDERSTYLE), propget] HRESULT borderStyle ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_SYSMENU), propput] HRESULT sysMenu ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_SYSMENU), propget] HRESULT sysMenu ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_CAPTION), propput] HRESULT caption ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_CAPTION), propget] HRESULT caption ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_WINDOWSTATE), propput] HRESULT windowState ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_WINDOWSTATE), propget] HRESULT windowState ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_SHOWINTASKBAR), propput] HRESULT showInTaskBar ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_SHOWINTASKBAR), propget] HRESULT showInTaskBar ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_COMMANDLINE), propget] HRESULT commandLine ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (3050f5c9-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLAppBehavior2 : IDispatch {
    [id (DISPID_IHTMLAPPBEHAVIOR2_CONTEXTMENU), propput] HRESULT contextMenu ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_CONTEXTMENU), propget] HRESULT contextMenu ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR2_INNERBORDER), propput] HRESULT innerBorder ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_INNERBORDER), propget] HRESULT innerBorder ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SCROLL), propput] HRESULT scroll ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SCROLL), propget] HRESULT scroll ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SCROLLFLAT), propput] HRESULT scrollFlat ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SCROLLFLAT), propget] HRESULT scrollFlat ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SELECTION), propput] HRESULT selection ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SELECTION), propget] HRESULT selection ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (3050f5cd-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLAppBehavior3 : IDispatch {
    [id (DISPID_IHTMLAPPBEHAVIOR3_NAVIGABLE), propput] HRESULT navigable ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR3_NAVIGABLE), propget] HRESULT navigable ([retval, out] BSTR *p);
  };

  [hidden, uuid (3050f57c-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLAppBehavior {
    properties:
    methods:
    [id (DISPID_IHTMLAPPBEHAVIOR_APPLICATIONNAME), propput] void applicationName (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_APPLICATIONNAME), propget] BSTR applicationName ();
    [id (DISPID_IHTMLAPPBEHAVIOR_VERSION), propput] void version (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_VERSION), propget] BSTR version ();
    [id (DISPID_IHTMLAPPBEHAVIOR_ICON), propput] void icon (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_ICON), propget] BSTR icon ();
    [id (DISPID_IHTMLAPPBEHAVIOR_SINGLEINSTANCE), propput] void singleInstance (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_SINGLEINSTANCE), propget] BSTR singleInstance ();
    [id (DISPID_IHTMLAPPBEHAVIOR_MINIMIZEBUTTON), propput] void minimizeButton (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_MINIMIZEBUTTON), propget] BSTR minimizeButton ();
    [id (DISPID_IHTMLAPPBEHAVIOR_MAXIMIZEBUTTON), propput] void maximizeButton (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_MAXIMIZEBUTTON), propget] BSTR maximizeButton ();
    [id (DISPID_IHTMLAPPBEHAVIOR_BORDER), propput] void border (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_BORDER), propget] BSTR border ();
    [id (DISPID_IHTMLAPPBEHAVIOR_BORDERSTYLE), propput] void borderStyle (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_BORDERSTYLE), propget] BSTR borderStyle ();
    [id (DISPID_IHTMLAPPBEHAVIOR_SYSMENU), propput] void sysMenu (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_SYSMENU), propget] BSTR sysMenu ();
    [id (DISPID_IHTMLAPPBEHAVIOR_CAPTION), propput] void caption (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_CAPTION), propget] BSTR caption ();
    [id (DISPID_IHTMLAPPBEHAVIOR_WINDOWSTATE), propput] void windowState (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_WINDOWSTATE), propget] BSTR windowState ();
    [id (DISPID_IHTMLAPPBEHAVIOR_SHOWINTASKBAR), propput] void showInTaskBar (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_SHOWINTASKBAR), propget] BSTR showInTaskBar ();
    [id (DISPID_IHTMLAPPBEHAVIOR_COMMANDLINE), propget] BSTR commandLine ();
    [id (DISPID_IHTMLAPPBEHAVIOR2_CONTEXTMENU), propput] void contextMenu (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_CONTEXTMENU), propget] BSTR contextMenu ();
    [id (DISPID_IHTMLAPPBEHAVIOR2_INNERBORDER), propput] void innerBorder (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_INNERBORDER), propget] BSTR innerBorder ();
    [id (DISPID_IHTMLAPPBEHAVIOR2_SCROLL), propput] void scroll (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SCROLL), propget] BSTR scroll ();
    [id (DISPID_IHTMLAPPBEHAVIOR2_SCROLLFLAT), propput] void scrollFlat (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SCROLLFLAT), propget] BSTR scrollFlat ();
    [id (DISPID_IHTMLAPPBEHAVIOR2_SELECTION), propput] void selection (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SELECTION), propget] BSTR selection ();
  };

  [noncreatable, uuid (3050f5cb-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLAppBehavior {
    [default] dispinterface DispHTMLAppBehavior;
    interface IHTMLAppBehavior;
    interface IHTMLAppBehavior2;
  };

  [uuid (D48A6EC9-6a4a-11cf-94a7-444553540000), noncreatable]
  coclass OldHTMLDocument {
    [default] dispinterface DispHTMLDocument;
    [source, default] dispinterface HTMLDocumentEvents;
    interface IHTMLDocument2;
    interface IHTMLDocument3;
  };
  
  [uuid (0d04d285-6bec-11cf-8b97-00aa00476da6), noncreatable]
  coclass OldHTMLFormElement {
    [default] dispinterface DispHTMLFormElement;
    [source, default] dispinterface HTMLFormElementEvents;
    interface IHTMLFormElement;
    interface IHTMLElement;
    interface IHTMLElement2;
  };

  [hidden, uuid (3050f51e-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispIHTMLInputButtonElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [id (DISPID_IHTMLELEMENT_ONSELECTSTART), propput, displaybind, bindable] void onselectstart (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONSELECTSTART), propget, displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [id (DISPID_IHTMLELEMENT_SOURCEINDEX), propget, bindable] long sourceIndex ();
    [id (DISPID_IHTMLELEMENT_RECORDNUMBER), propget] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [id (DISPID_IHTMLELEMENT_INNERHTML), propput] void innerHTML (BSTR v);
    [id (DISPID_IHTMLELEMENT_INNERHTML), propget] BSTR innerHTML ();
    [id (DISPID_IHTMLELEMENT_INNERTEXT), propput] void innerText (BSTR v);
    [id (DISPID_IHTMLELEMENT_INNERTEXT), propget] BSTR innerText ();
    [id (DISPID_IHTMLELEMENT_OUTERHTML), propput] void outerHTML (BSTR v);
    [id (DISPID_IHTMLELEMENT_OUTERHTML), propget] BSTR outerHTML ();
    [id (DISPID_IHTMLELEMENT_OUTERTEXT), propput] void outerText (BSTR v);
    [id (DISPID_IHTMLELEMENT_OUTERTEXT), propget] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT), propget] IHTMLElement *parentTextEdit ();
    [id (DISPID_IHTMLELEMENT_ISTEXTEDIT), propget] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [id (DISPID_IHTMLELEMENT_FILTERS), propget] IHTMLFiltersCollection *filters ();
    [id (DISPID_IHTMLELEMENT_ONDRAGSTART), propput, displaybind, bindable] void ondragstart (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDRAGSTART), propget, displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), propput, displaybind, bindable] void onbeforeupdate (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), propget, displaybind, bindable] VARIANT onbeforeupdate ();
    [id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), propput, displaybind, bindable] void onafterupdate (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), propget, displaybind, bindable] VARIANT onafterupdate ();
    [id (DISPID_IHTMLELEMENT_ONERRORUPDATE), propput, displaybind, bindable] void onerrorupdate (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONERRORUPDATE), propget, displaybind, bindable] VARIANT onerrorupdate ();
    [id (DISPID_IHTMLELEMENT_ONROWEXIT), propput, displaybind, bindable] void onrowexit (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONROWEXIT), propget, displaybind, bindable] VARIANT onrowexit ();
    [id (DISPID_IHTMLELEMENT_ONROWENTER), propput, displaybind, bindable] void onrowenter (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONROWENTER), propget, displaybind, bindable] VARIANT onrowenter ();
    [id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), propput, displaybind, bindable] void ondatasetchanged (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), propget, displaybind, bindable] VARIANT ondatasetchanged ();
    [id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), propput, displaybind, bindable] void ondataavailable (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), propget, displaybind, bindable] VARIANT ondataavailable ();
    [id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), propput, displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), propget, displaybind, bindable] VARIANT ondatasetcomplete ();
    [id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), propput, displaybind, bindable] void onfilterchange (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), propget, displaybind, bindable] VARIANT onfilterchange ();
    [id (DISPID_IHTMLELEMENT_CHILDREN), propget] IDispatch *children ();
    [id (DISPID_IHTMLELEMENT_ALL), propget] IDispatch *all ();
    [id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), propput, displaybind, bindable] void tabIndex (short v);
    [id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), propget, displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLCONTROLELEMENT_FOCUS)] void focus ();
    [id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), propput, displaybind, bindable] void accessKey (BSTR v);
    [id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), propget, displaybind, bindable] BSTR accessKey ();
    [id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), propput, displaybind, bindable] void onblur (VARIANT v);
    [id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), propget, displaybind, bindable] VARIANT onblur ();
    [id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), propput, displaybind, bindable] void onfocus (VARIANT v);
    [id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), propget, displaybind, bindable] VARIANT onfocus ();
    [id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), propput, displaybind, bindable] void onresize (VARIANT v);
    [id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), propget, displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLCONTROLELEMENT_BLUR)] void blur ();
    [id (DISPID_IHTMLCONTROLELEMENT_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLCONTROLELEMENT_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLCONTROLELEMENT_CLIENTHEIGHT), propget, displaybind, bindable] long clientHeight ();
    [id (DISPID_IHTMLCONTROLELEMENT_CLIENTWIDTH), propget, displaybind, bindable] long clientWidth ();
    [id (DISPID_IHTMLCONTROLELEMENT_CLIENTTOP), propget, displaybind, bindable] long clientTop ();
    [id (DISPID_IHTMLCONTROLELEMENT_CLIENTLEFT), propget, displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_TYPE), propget] BSTR type ();
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_VALUE), propput, displaybind, bindable] void value (BSTR v);
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_VALUE), propget, displaybind, bindable] BSTR value ();
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_NAME), propput, displaybind, bindable] void name (BSTR v);
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_NAME), propget, displaybind, bindable] BSTR name ();
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_STATUS), propput] void status (VARIANT v);
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_STATUS), propget] VARIANT status ();
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_DISABLED), propput, displaybind, bindable] void disabled (VARIANT_BOOL v);
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_DISABLED), propget, displaybind, bindable] VARIANT_BOOL disabled ();
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_FORM), propget] IHTMLFormElement *form ();
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_CREATETEXTRANGE)] IHTMLTxtRange *createTextRange ();
  };

  [uuid (3050f2b4-98b5-11cf-bb82-00aa00bdce0b), noncreatable]
  coclass HTMLInputButtonElement {
    [default] dispinterface DispIHTMLInputButtonElement;
    [source, default] dispinterface HTMLButtonElementEvents;
    interface IHTMLInputButtonElement;
    interface IHTMLControlElement;
    interface IHTMLElement;
  };
  
  [hidden, uuid (3050f520-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispIHTMLInputTextElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLCONTROLELEMENT_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLCONTROLELEMENT_BLUR)] void blur ();
    [id (DISPID_IHTMLCONTROLELEMENT_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLCONTROLELEMENT_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_TYPE)] BSTR type ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_VALUE), displaybind, bindable] void value (BSTR v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_VALUE), displaybind, bindable] BSTR value ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_STATUS)] void status (VARIANT v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_STATUS)] VARIANT status ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_FORM)] IHTMLFormElement *form ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] void defaultValue (BSTR v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] BSTR defaultValue ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_SIZE), displaybind, bindable] void size (long v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_SIZE), displaybind, bindable] long size ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_MAXLENGTH), displaybind, bindable] void maxLength (long v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_MAXLENGTH), displaybind, bindable] long maxLength ();
    [id (DISPID_IHTMLINPUTTEXTELEMENT_SELECT)] void select ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [id (DISPID_IHTMLINPUTTEXTELEMENT_READONLY), propput, displaybind, bindable] void readOnly (VARIANT_BOOL v);
    [id (DISPID_IHTMLINPUTTEXTELEMENT_READONLY), propget, displaybind, bindable] VARIANT_BOOL readOnly ();
    [id (DISPID_IHTMLINPUTTEXTELEMENT_CREATETEXTRANGE)] IHTMLTxtRange *createTextRange ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
  };
  
  [uuid (3050f2ab-98b5-11cf-bb82-00aa00bdce0b), noncreatable]
  coclass HTMLInputTextElement {
    [default] dispinterface DispIHTMLInputTextElement;
    [source, default] dispinterface HTMLInputTextElementEvents;
    interface IHTMLInputTextElement;
    interface IHTMLControlElement;
    interface IHTMLElement;
    interface IHTMLDatabinding;
  };
  
  [hidden, uuid (3050f542-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispIHTMLInputFileElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_CLASSNAME), propput, bindable] void className (BSTR v);
    [id (DISPID_IHTMLELEMENT_CLASSNAME), propget, bindable] BSTR className ();
    [id (DISPID_IHTMLELEMENT_ID), propput, bindable] void id (BSTR v);
    [id (DISPID_IHTMLELEMENT_ID), propget, bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLCONTROLELEMENT_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLCONTROLELEMENT_BLUR)] void blur ();
    [id (DISPID_IHTMLCONTROLELEMENT_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLCONTROLELEMENT_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_TYPE)] BSTR type ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_STATUS)] void status (VARIANT v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_STATUS)] VARIANT status ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_FORM)] IHTMLFormElement *form ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_SIZE), displaybind, bindable] void size (long v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_SIZE), displaybind, bindable] long size ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_MAXLENGTH), displaybind, bindable] void maxLength (long v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_MAXLENGTH), displaybind, bindable] long maxLength ();
    [id (DISPID_IHTMLINPUTFILEELEMENT_SELECT)] void select ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_VALUE), displaybind, bindable] void value (BSTR v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_VALUE), displaybind, bindable] BSTR value ();
  };

  [uuid (3050f2ae-98b5-11cf-bb82-00aa00bdce0b), noncreatable]
  coclass HTMLInputFileElement {
    [default] dispinterface DispIHTMLInputFileElement;
    [source, default] dispinterface HTMLInputFileElementEvents;
    interface IHTMLInputFileElement;
    interface IHTMLControlElement;
    interface IHTMLElement;
  };

  [hidden, uuid (3050f509-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispIHTMLOptionButtonElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLCONTROLELEMENT_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLCONTROLELEMENT_BLUR)] void blur ();
    [id (DISPID_IHTMLCONTROLELEMENT_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLCONTROLELEMENT_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_VALUE), bindable] void value (BSTR v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_VALUE), bindable] BSTR value ();
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_TYPE)] BSTR type ();
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_NAME), bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_NAME), bindable] BSTR name ();
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_CHECKED), bindable] void checked (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_CHECKED), bindable] VARIANT_BOOL checked ();
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_DEFAULTCHECKED), bindable] void defaultChecked (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_DEFAULTCHECKED), bindable] VARIANT_BOOL defaultChecked ();
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_ONCHANGE), bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_ONCHANGE), bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_STATUS)] void status (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_STATUS)] VARIANT_BOOL status ();
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_INDETERMINATE), bindable] void indeterminate (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_INDETERMINATE), bindable] VARIANT_BOOL indeterminate ();
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_FORM)] IHTMLFormElement *form ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] void dataFld (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFLD)] BSTR dataFld ();
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] void dataSrc (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATASRC)] BSTR dataSrc ();
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] void dataFormatAs (BSTR v);
    [propget, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] BSTR dataFormatAs ();
  };

  [uuid (3050f2be-98b5-11cf-bb82-00aa00bdce0b), noncreatable]
  coclass HTMLOptionButtonElement {
    [default] dispinterface DispIHTMLOptionButtonElement;
    [source, default] dispinterface HTMLOptionButtonElementEvents;
    interface IHTMLOptionButtonElement;
    interface IHTMLControlElement;
    interface IHTMLElement;
    interface IHTMLDatabinding;
  };

  [hidden, uuid (3050f51d-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispIHTMLInputImage {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] void className (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] BSTR id ();
    [propget, id (DISPID_IHTMLELEMENT_TAGNAME)] BSTR tagName ();
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] IHTMLElement *parentElement ();
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] VARIANT onkeyup ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] void onkeypress (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] VARIANT onkeypress ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] void onmouseout (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] VARIANT onmouseout ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] void onmouseover (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] VARIANT onmouseover ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] void onmousemove (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] VARIANT onmousemove ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] void onmousedown (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] VARIANT onmousedown ();
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] void onmouseup (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] VARIANT onmouseup ();
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch *document ();
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] void title (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] BSTR title ();
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] void language (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] BSTR language ();
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] void onselectstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [propget, id (DISPID_IHTMLELEMENT_SOURCEINDEX), bindable] long sourceIndex ();
    [propget, id (DISPID_IHTMLELEMENT_RECORDNUMBER)] VARIANT recordNumber ();
    [propput, id (DISPID_IHTMLELEMENT_LANG)] void lang (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANG)] BSTR lang ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETLEFT)] long offsetLeft ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETTOP)] long offsetTop ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETWIDTH)] long offsetWidth ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETHEIGHT)] long offsetHeight ();
    [propget, id (DISPID_IHTMLELEMENT_OFFSETPARENT)] IHTMLElement *offsetParent ();
    [propput, id (DISPID_IHTMLELEMENT_INNERHTML)] void innerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERHTML)] BSTR innerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_INNERTEXT)] void innerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_INNERTEXT)] BSTR innerText ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERHTML)] void outerHTML (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERHTML)] BSTR outerHTML ();
    [propput, id (DISPID_IHTMLELEMENT_OUTERTEXT)] void outerText (BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_OUTERTEXT)] BSTR outerText ();
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] void insertAdjacentHTML ([in] BSTR where,[in] BSTR html);
    [id (DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] void insertAdjacentText ([in] BSTR where,[in] BSTR text);
    [propget, id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] IHTMLElement *parentTextEdit ();
    [propget, id (DISPID_IHTMLELEMENT_ISTEXTEDIT)] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [propget, id (DISPID_IHTMLELEMENT_FILTERS)] IHTMLFiltersCollection *filters ();
    [propput, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] void ondragstart (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] void onbeforeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] VARIANT onbeforeupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] void onafterupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] VARIANT onafterupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] void onerrorupdate (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] VARIANT onerrorupdate ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] void onrowexit (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] VARIANT onrowexit ();
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] void onrowenter (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] VARIANT onrowenter ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] void ondatasetchanged (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] VARIANT ondatasetchanged ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] void ondataavailable (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] VARIANT ondataavailable ();
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] VARIANT ondatasetcomplete ();
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] void onfilterchange (VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] VARIANT onfilterchange ();
    [propget, id (DISPID_IHTMLELEMENT_CHILDREN)] IDispatch *children ();
    [propget, id (DISPID_IHTMLELEMENT_ALL)] IDispatch *all ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLCONTROLELEMENT_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLCONTROLELEMENT_BLUR)] void blur ();
    [id (DISPID_IHTMLCONTROLELEMENT_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLCONTROLELEMENT_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [propget, id (DISPID_IHTMLINPUTIMAGE_TYPE)] BSTR type ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_BORDER), displaybind, bindable] void border (VARIANT v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_BORDER), displaybind, bindable] VARIANT border ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_VSPACE), displaybind, bindable] void vspace (long v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_VSPACE), displaybind, bindable] long vspace ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_HSPACE), displaybind, bindable] void hspace (long v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_HSPACE), displaybind, bindable] long hspace ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_ALT), displaybind, bindable] void alt (BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_ALT), displaybind, bindable] BSTR alt ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_SRC), displaybind, bindable] void src (BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_SRC), displaybind, bindable] BSTR src ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_LOWSRC), displaybind, bindable] void lowsrc (BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_LOWSRC), displaybind, bindable] BSTR lowsrc ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_VRML), displaybind, bindable] void vrml (BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_VRML), displaybind, bindable] BSTR vrml ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_DYNSRC), displaybind, bindable] void dynsrc (BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_DYNSRC), displaybind, bindable] BSTR dynsrc ();
    [propget, id (DISPID_IHTMLINPUTIMAGE_READYSTATE)] BSTR readyState ();
    [propget, id (DISPID_IHTMLINPUTIMAGE_COMPLETE)] VARIANT_BOOL complete ();
    [id (DISPID_IHTMLINPUTIMAGE_LOOP), propput, displaybind, bindable] void loop (VARIANT v);
    [id (DISPID_IHTMLINPUTIMAGE_LOOP), propget, displaybind, bindable] VARIANT loop ();
    [id (DISPID_IHTMLINPUTIMAGE_ALIGN), propput, displaybind, bindable] void align (BSTR v);
    [id (DISPID_IHTMLINPUTIMAGE_ALIGN), propget, displaybind, bindable] BSTR align ();
    [id (DISPID_IHTMLINPUTIMAGE_ONLOAD), propput, displaybind, bindable] void onload (VARIANT v);
    [id (DISPID_IHTMLINPUTIMAGE_ONLOAD), propget, displaybind, bindable] VARIANT onload ();
    [id (DISPID_IHTMLINPUTIMAGE_ONERROR), propput, displaybind, bindable] void onerror (VARIANT v);
    [id (DISPID_IHTMLINPUTIMAGE_ONERROR), propget, displaybind, bindable] VARIANT onerror ();
    [id (DISPID_IHTMLINPUTIMAGE_ONABORT), propput, displaybind, bindable] void onabort (VARIANT v);
    [id (DISPID_IHTMLINPUTIMAGE_ONABORT), propget, displaybind, bindable] VARIANT onabort ();
    [id (DISPID_IHTMLINPUTIMAGE_NAME), propput, displaybind, bindable] void name (BSTR v);
    [id (DISPID_IHTMLINPUTIMAGE_NAME), propget, displaybind, bindable] BSTR name ();
    [id (DISPID_IHTMLINPUTIMAGE_WIDTH), propput] void width (long v);
    [id (DISPID_IHTMLINPUTIMAGE_WIDTH), propget] long width ();
    [id (DISPID_IHTMLINPUTIMAGE_HEIGHT), propput] void height (long v);
    [id (DISPID_IHTMLINPUTIMAGE_HEIGHT), propget] long height ();
    [id (DISPID_IHTMLINPUTIMAGE_START), propput, displaybind, bindable] void start (BSTR v);
    [id (DISPID_IHTMLINPUTIMAGE_START), propget, displaybind, bindable] BSTR start ();
  };

  [uuid (3050f2c4-98b5-11cf-bb82-00aa00bdce0b), noncreatable]
  coclass HTMLInputImage {
    [default] dispinterface DispIHTMLInputImage;
    [source, default] dispinterface HTMLInputImageEvents;
    interface IHTMLInputImage;
    interface IHTMLControlElement;
    interface IHTMLElement;
  };

  [object, pointer_default (unique), uuid (3050f429-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorFactory : IUnknown {
    HRESULT FindBehavior ([in] BSTR bstrBehavior,[in] BSTR bstrBehaviorUrl,[in] IElementBehaviorSite *pSite,[retval, out] IElementBehavior **ppBehavior);
  };

  [object, pointer_default (unique), uuid (3050f671-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementNamespace : IUnknown {
    HRESULT AddTag ([in] BSTR bstrTagName,[in] LONG lFlags);
  };

  [object, pointer_default (unique), uuid (3050f670-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementNamespaceTable : IUnknown {
    HRESULT AddNamespace ([in] BSTR bstrNamespace,[in] BSTR bstrUrn,[in] LONG lFlags,[in] VARIANT *pvarFactory);
  };

  [object, pointer_default (unique), uuid (3050f672-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementNamespaceFactory : IUnknown {
    HRESULT Create ([in] IElementNamespace *pNamespace);
  };

  [object, pointer_default (unique), uuid (3050f805-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementNamespaceFactory2 : IElementNamespaceFactory {
    HRESULT CreateWithImplementation ([in] IElementNamespace *pNamespace,[in] BSTR bstrImplementation);
  };

  [object, pointer_default (unique), uuid (3050f7fd-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementNamespaceFactoryCallback : IUnknown {
    HRESULT Resolve ([in] BSTR bstrNamespace,[in] BSTR bstrTagName,[in] BSTR bstrAttrs,[in] IElementNamespace *pNamespace);
  };

  [object, pointer_default (unique), uuid (3050f425-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehavior : IUnknown {
    HRESULT Init ([in] IElementBehaviorSite *pBehaviorSite);
    HRESULT Notify ([in] LONG lEvent,[in, out] VARIANT *pVar);
    HRESULT Detach ();
  };

  [object, pointer_default (unique), uuid (3050f427-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorSite : IUnknown {
    HRESULT GetElement ([retval, out] IHTMLElement **ppElement);
    HRESULT RegisterNotification ([in] LONG lEvent);
  };

  [object, pointer_default (unique), uuid (3050f489-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorSiteOM : IUnknown {
    HRESULT RegisterEvent ([in] LPOLESTR pchEvent,[in] LONG lFlags,[retval, out] LONG *plCookie);
    HRESULT GetEventCookie ([in] LPOLESTR pchEvent,[retval, out] LONG *plCookie);
    HRESULT FireEvent ([in] LONG lCookie,[in] IHTMLEventObj *pEventObject);
    HRESULT CreateEventObject ([retval, out] IHTMLEventObj **ppEventObject);
    HRESULT RegisterName ([in] LPOLESTR pchName);
    HRESULT RegisterUrn ([in] LPOLESTR pchUrn);
  };

  [object, pointer_default (unique), uuid (3050f659-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorSiteOM2 : IElementBehaviorSiteOM {
    HRESULT GetDefaults ([retval, out] IHTMLElementDefaults **ppDefaults);
  };

  [object, pointer_default (unique), uuid (3050f4aa-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorRender : IUnknown {
    HRESULT Draw ([in] HDC hdc,[in] LONG lLayer,[in] RECT *pRect,[in] IUnknown *pReserved);
    HRESULT GetRenderInfo ([retval, out] LONG *plRenderInfo);
    HRESULT HitTestPoint ([in] POINT *pPoint,[in] IUnknown *pReserved,[retval, out] BOOL *pbHit);
  };

  [object, pointer_default (unique), uuid (3050f4a7-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorSiteRender : IUnknown {
    HRESULT Invalidate ([in] RECT *pRect);
    HRESULT InvalidateRenderInfo ();
    HRESULT InvalidateStyle ();
  };

  [object, pointer_default (unique), uuid (3050f4ed-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorCategory : IUnknown {
    HRESULT GetCategory ([retval, out] LPOLESTR *ppchCategory);
  };

  [object, pointer_default (unique), uuid (3050f4ee-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorSiteCategory : IUnknown {
    HRESULT GetRelatedBehaviors ([in] LONG lDirection,[in] LPOLESTR pchCategory,[retval, out] IEnumUnknown **ppEnumerator);
  };

  [object, pointer_default (unique), uuid (3050f646-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorSubmit : IUnknown {
    HRESULT GetSubmitInfo ([in] IHTMLSubmitData *pSubmitData);
    HRESULT Reset ();
  };

  [object, pointer_default (unique), uuid (3050f6b6-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorFocus : IUnknown {
    HRESULT GetFocusRect ([in] RECT *pRect);
  };

  [object, pointer_default (unique), uuid (3050f6ba-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorLayout : IUnknown {
    HRESULT GetSize ([in] LONG dwFlags,[in] SIZE sizeContent,[in, out] POINT *pptTranslateBy,[in, out] POINT *pptTopLeft,[in, out] SIZE *psizeProposed);
    HRESULT GetLayoutInfo ([retval, out] LONG *plLayoutInfo);
    HRESULT GetPosition ([in] LONG lFlags,[in, out] POINT *pptTopLeft);
    HRESULT MapSize ([in] SIZE *psizeIn,[out] RECT *prcOut);
  };

  [object, pointer_default (unique), uuid (3050f846-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorLayout2 : IUnknown {
    HRESULT GetTextDescent ([out] LONG *plDescent);
  };

  [object, pointer_default (unique), uuid (3050f6b7-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorSiteLayout : IUnknown {
    HRESULT InvalidateLayoutInfo ();
    HRESULT InvalidateSize ();
    HRESULT GetMediaResolution ([retval, out] SIZE *psizeResolution);
  };

  [object, pointer_default (unique), uuid (3050f847-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorSiteLayout2 : IUnknown {
    HRESULT GetFontInfo ([out] LOGFONTW *plf);
  };

  [object, pointer_default (unique), uuid (3050f842-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHostBehaviorInit : IUnknown {
    HRESULT PopulateNamespaceTable ();
  };

  [object, pointer_default (unique), uuid (305106e1-98b5-11cf-bb82-00aa00bdce0b)]
  interface IViewObjectPresentSite : IUnknown {
    HRESULT CreateSurfacePresenter ([in] IUnknown *pDevice,[in] UINT width,[in] UINT height,[in] UINT backBufferCount,[in] DXGI_FORMAT format,[in] VIEW_OBJECT_ALPHA_MODE mode,[retval, out] ISurfacePresenter **ppQueue);
    HRESULT IsHardwareComposition ([retval, out] BOOL *pIsHardwareComposition);
    HRESULT SetCompositionMode ([in] VIEW_OBJECT_COMPOSITION_MODE mode);
  };

  [object, pointer_default (unique), uuid (305106e2-98b5-11cf-bb82-00aa00bdce0b)]
  interface ISurfacePresenter : IUnknown {
    HRESULT Present ([in] UINT uBuffer,[in] RECT *pDirty);
    HRESULT GetBuffer ([in] UINT backBufferIndex,[in] REFIID riid,[retval, out, iid_is (riid)] void **ppBuffer);
    HRESULT IsCurrent ([retval, out] BOOL *pIsCurrent);
  };

  [object, pointer_default (unique), uuid (305107f9-98b5-11cf-bb82-00aa00bdce0b)]
  interface ICanvasPixelArrayData : IUnknown {
    HRESULT GetBufferPointer ([out] BYTE **ppBuffer,[out] ULONG *pBufferLength);
  };

  [object, pointer_default (unique), uuid (305106e3-98b5-11cf-bb82-00aa00bdce0b)]
  interface IViewObjectPrint : IUnknown {
    HRESULT GetPrintBitmap ([retval, out] IUnknown **ppPrintBitmap);
  };

  [object, pointer_default (unique), uuid (305107fa-98b5-11cf-bb82-00aa00bdce0b)]
  interface IViewObjectPresentNotifySite : IViewObjectPresentSite {
    HRESULT RequestFrame ();
  };

  [object, pointer_default (unique), uuid (305107f8-98b5-11cf-bb82-00aa00bdce0b)]
  interface IViewObjectPresentNotify : IUnknown {
    HRESULT OnPreRender ();
  };

  [object, pointer_default (unique), uuid (30510803-98b5-11cf-bb82-00aa00bdce0b)]
  interface ITrackingProtection : IUnknown {
    HRESULT EvaluateUrl ([in] BSTR bstrUrl,[out] BOOL *pfAllowed);
    HRESULT GetEnabled ([out] BOOL *pfEnabled);
  };
}

cpp_quote("#endif")
