diff --git a/share/qtcreator/qml-type-descriptions/qml-builtin-types.xml b/share/qtcreator/qml-type-descriptions/qml-builtin-types.xml
new file mode 100644
index 0000000000000000000000000000000000000000..579395a188db14d305528db4c5da6d9af8c9ac70
--- /dev/null
+++ b/share/qtcreator/qml-type-descriptions/qml-builtin-types.xml
@@ -0,0 +1,2813 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module>
+    <type name="Qt.Binding" version="4.6" extends="Qt.QtObject">
+        <property name="target" type="Qt.QtObject"/>
+        <property name="property" type="string"/>
+        <property name="value" type="QVariant"/>
+        <property name="when" type="bool"/>
+    </type>
+    <type name="Qt.Loader" version="4.6" extends="Qt.Item">
+        <enum name="Status">
+            <enumerator name="Null" value="0"/>
+            <enumerator name="Ready" value="1"/>
+            <enumerator name="Loading" value="2"/>
+            <enumerator name="Error" value="3"/>
+        </enum>
+        <enum name="ResizeMode">
+            <enumerator name="NoResize" value="0"/>
+            <enumerator name="SizeLoaderToItem" value="1"/>
+            <enumerator name="SizeItemToLoader" value="2"/>
+        </enum>
+        <property name="source" type="QUrl"/>
+        <property name="sourceComponent" type="Qt.Component"/>
+        <property name="resizeMode" type="ResizeMode"/>
+        <property name="item" type="QGraphicsObject"/>
+        <property name="status" type="Status"/>
+        <property name="progress" type="qreal"/>
+        <signal name="itemChanged"/>
+        <signal name="sourceChanged"/>
+        <signal name="statusChanged"/>
+        <signal name="progressChanged"/>
+        <signal name="resizeModeChanged"/>
+    </type>
+    <type name="Qt.RotationAnimation" version="4.6" extends="Qt.PropertyAnimation">
+        <enum name="RotationDirection">
+            <enumerator name="Numerical" value="0"/>
+            <enumerator name="Shortest" value="1"/>
+            <enumerator name="Clockwise" value="2"/>
+            <enumerator name="Counterclockwise" value="3"/>
+        </enum>
+        <property name="from" type="qreal"/>
+        <property name="to" type="qreal"/>
+        <property name="direction" type="RotationDirection"/>
+        <signal name="directionChanged"/>
+    </type>
+    <type name="QDeclarativeVisualDataModelParts" extends="QDeclarativeVisualDataModelParts"/>
+    <type name="Qt.PropertyAnimation" version="4.6" extends="QDeclarativeAbstractAnimation">
+        <property name="duration" type="int"/>
+        <property name="from" type="QVariant"/>
+        <property name="to" type="QVariant"/>
+        <property name="easing" type="QEasingCurve"/>
+        <property name="target" type="Qt.QtObject"/>
+        <property name="property" type="string"/>
+        <property name="properties" type="string"/>
+        <property name="targets" type="Qt.QtObject" isList="true"/>
+        <property name="exclude" type="Qt.QtObject" isList="true"/>
+        <signal name="durationChanged">
+            <param type="int"/>
+        </signal>
+        <signal name="fromChanged">
+            <param type="QVariant"/>
+        </signal>
+        <signal name="toChanged">
+            <param type="QVariant"/>
+        </signal>
+        <signal name="easingChanged">
+            <param type="QEasingCurve"/>
+        </signal>
+        <signal name="propertiesChanged">
+            <param type="string"/>
+        </signal>
+        <signal name="targetChanged">
+            <param type="Qt.QtObject"/>
+            <param type="string"/>
+        </signal>
+    </type>
+    <type name="Qt.Flow" version="4.6" extends="QDeclarativeBasePositioner">
+        <enum name="Flow">
+            <enumerator name="LeftToRight" value="0"/>
+            <enumerator name="TopToBottom" value="1"/>
+        </enum>
+        <property name="flow" type="Flow"/>
+        <signal name="flowChanged"/>
+    </type>
+    <type name="Qt.Path" version="4.6" extends="Qt.QtObject">
+        <property name="pathElements" type="QDeclarativePathElement" isList="true"/>
+        <property name="startX" type="qreal"/>
+        <property name="startY" type="qreal"/>
+        <property name="closed" type="bool"/>
+        <signal name="changed"/>
+    </type>
+    <type name="Qt.PauseAnimation" version="4.6" extends="QDeclarativeAbstractAnimation">
+        <property name="duration" type="int"/>
+        <signal name="durationChanged">
+            <param type="int"/>
+        </signal>
+    </type>
+    <type name="Qt.ParticleMotionLinear" version="4.6" extends="Qt.ParticleMotion"/>
+    <type name="QDeclarativeBasePositioner" extends="Qt.Item">
+        <property name="spacing" type="int"/>
+        <property name="move" type="Qt.Transition"/>
+        <property name="add" type="Qt.Transition"/>
+        <signal name="spacingChanged"/>
+        <signal name="moveChanged"/>
+        <signal name="addChanged"/>
+    </type>
+    <type name="Qt.PathLine" version="4.6" extends="QDeclarativeCurve"/>
+    <type name="QListModelInterface" extends="Qt.QtObject">
+        <signal name="itemsInserted">
+            <param name="index" type="int"/>
+            <param name="count" type="int"/>
+        </signal>
+        <signal name="itemsRemoved">
+            <param name="index" type="int"/>
+            <param name="count" type="int"/>
+        </signal>
+        <signal name="itemsMoved">
+            <param name="from" type="int"/>
+            <param name="to" type="int"/>
+            <param name="count" type="int"/>
+        </signal>
+        <signal name="itemsChanged">
+            <param name="index" type="int"/>
+            <param name="count" type="int"/>
+            <param name="roles" type="QList&lt;int&gt;"/>
+        </signal>
+    </type>
+    <type name="Qt.State" version="4.6" extends="Qt.QtObject">
+        <property name="name" type="string"/>
+        <property name="when" type="QDeclarativeBinding"/>
+        <property name="extend" type="string"/>
+        <property name="changes" type="QDeclarativeStateOperation" isList="true"/>
+        <signal name="completed"/>
+    </type>
+    <type name="QDeclarativeScaleGrid" extends="Qt.QtObject">
+        <property name="left" type="int"/>
+        <property name="top" type="int"/>
+        <property name="right" type="int"/>
+        <property name="bottom" type="int"/>
+        <signal name="borderChanged"/>
+    </type>
+    <type name="Qt.StateChangeScript" version="4.6" extends="QDeclarativeStateOperation">
+        <property name="script" type="QDeclarativeScriptString"/>
+        <property name="name" type="string"/>
+    </type>
+    <type name="Qt.VisibleArea" version="4.6" extends="Qt.QtObject">
+        <property name="xPosition" type="qreal"/>
+        <property name="yPosition" type="qreal"/>
+        <property name="widthRatio" type="qreal"/>
+        <property name="heightRatio" type="qreal"/>
+        <signal name="pageChanged"/>
+    </type>
+    <type name="Qt.WorkerScript" version="4.6" extends="Qt.QtObject">
+        <property name="source" type="QUrl"/>
+        <signal name="sourceChanged"/>
+        <signal name="message">
+            <param name="messageObject" type="QScriptValue"/>
+        </signal>
+        <method name="sendMessage">
+            <param type="QScriptValue"/>
+        </method>
+    </type>
+    <type name="Qt.ListElement" version="4.6" extends="Qt.QtObject"/>
+    <type name="Qt.GradientStop" version="4.6" extends="Qt.QtObject">
+        <property name="position" type="qreal"/>
+        <property name="color" type="QColor"/>
+    </type>
+    <type name="Qt.FontLoader" version="4.6" extends="Qt.QtObject">
+        <enum name="Status">
+            <enumerator name="Null" value="0"/>
+            <enumerator name="Ready" value="1"/>
+            <enumerator name="Loading" value="2"/>
+            <enumerator name="Error" value="3"/>
+        </enum>
+        <property name="source" type="QUrl"/>
+        <property name="name" type="string"/>
+        <property name="status" type="Status"/>
+        <signal name="nameChanged"/>
+        <signal name="statusChanged"/>
+    </type>
+    <type name="Qt.FocusScope" version="4.6" extends="Qt.Item"/>
+    <type name="Qt.VisualItemModel" version="4.6" extends="QDeclarativeVisualModel">
+        <property name="children" type="Qt.Item" isList="true"/>
+        <signal name="childrenChanged"/>
+    </type>
+    <type name="Qt.KeyNavigation" version="4.6" extends="Qt.QtObject">
+        <property name="left" type="Qt.Item"/>
+        <property name="right" type="Qt.Item"/>
+        <property name="up" type="Qt.Item"/>
+        <property name="down" type="Qt.Item"/>
+        <signal name="changed"/>
+    </type>
+    <type name="Qt.Repeater" version="4.6" extends="Qt.Item">
+        <property name="model" type="QVariant"/>
+        <property name="delegate" type="Qt.Component"/>
+        <property name="count" type="int"/>
+        <signal name="modelChanged"/>
+        <signal name="delegateChanged"/>
+        <signal name="countChanged"/>
+    </type>
+    <type name="Qt.QIntValidator" version="4.6" extends="QValidator">
+        <property name="bottom" type="int"/>
+        <property name="top" type="int"/>
+    </type>
+    <type name="QDeclarativeAnchors" extends="Qt.QtObject">
+        <property name="left" type="QDeclarativeAnchorLine"/>
+        <property name="right" type="QDeclarativeAnchorLine"/>
+        <property name="horizontalCenter" type="QDeclarativeAnchorLine"/>
+        <property name="top" type="QDeclarativeAnchorLine"/>
+        <property name="bottom" type="QDeclarativeAnchorLine"/>
+        <property name="verticalCenter" type="QDeclarativeAnchorLine"/>
+        <property name="baseline" type="QDeclarativeAnchorLine"/>
+        <property name="margins" type="qreal"/>
+        <property name="leftMargin" type="qreal"/>
+        <property name="rightMargin" type="qreal"/>
+        <property name="horizontalCenterOffset" type="qreal"/>
+        <property name="topMargin" type="qreal"/>
+        <property name="bottomMargin" type="qreal"/>
+        <property name="verticalCenterOffset" type="qreal"/>
+        <property name="baselineOffset" type="qreal"/>
+        <property name="fill" type="Qt.Item"/>
+        <property name="centerIn" type="Qt.Item"/>
+        <signal name="leftChanged"/>
+        <signal name="rightChanged"/>
+        <signal name="topChanged"/>
+        <signal name="bottomChanged"/>
+        <signal name="verticalCenterChanged"/>
+        <signal name="horizontalCenterChanged"/>
+        <signal name="baselineChanged"/>
+        <signal name="fillChanged"/>
+        <signal name="centerInChanged"/>
+        <signal name="leftMarginChanged"/>
+        <signal name="rightMarginChanged"/>
+        <signal name="topMarginChanged"/>
+        <signal name="bottomMarginChanged"/>
+        <signal name="marginsChanged"/>
+        <signal name="verticalCenterOffsetChanged"/>
+        <signal name="horizontalCenterOffsetChanged"/>
+        <signal name="baselineOffsetChanged"/>
+    </type>
+    <type name="Qt.Blur" version="4.6" extends="QGraphicsEffect">
+        <enum name="BlurHint">
+            <enumerator name="PerformanceHint" value="0"/>
+            <enumerator name="QualityHint" value="1"/>
+            <enumerator name="AnimationHint" value="2"/>
+        </enum>
+        <enum name="BlurHints">
+            <enumerator name="PerformanceHint" value="0"/>
+            <enumerator name="QualityHint" value="1"/>
+            <enumerator name="AnimationHint" value="2"/>
+        </enum>
+        <property name="blurRadius" type="qreal"/>
+        <property name="blurHints" type="BlurHints"/>
+        <signal name="blurRadiusChanged">
+            <param name="blurRadius" type="qreal"/>
+        </signal>
+        <signal name="blurHintsChanged">
+            <param name="hints" type="BlurHints"/>
+        </signal>
+        <method name="setBlurRadius">
+            <param name="blurRadius" type="qreal"/>
+        </method>
+        <method name="setBlurHints">
+            <param name="hints" type="BlurHints"/>
+        </method>
+    </type>
+    <type name="Qt.StateGroup" version="4.6" extends="Qt.QtObject">
+        <property name="state" type="string"/>
+        <property name="states" type="Qt.State" isList="true"/>
+        <property name="transitions" type="Qt.Transition" isList="true"/>
+        <signal name="stateChanged">
+            <param type="string"/>
+        </signal>
+    </type>
+    <type name="QDeclarativeAnimationGroup" extends="QDeclarativeAbstractAnimation">
+        <property name="animations" type="QDeclarativeAbstractAnimation" isList="true"/>
+    </type>
+    <type name="Qt.ColorAnimation" version="4.6" extends="Qt.PropertyAnimation">
+        <property name="from" type="QColor"/>
+        <property name="to" type="QColor"/>
+    </type>
+    <type name="Qt.ViewSection" version="4.6" extends="Qt.QtObject">
+        <enum name="SectionCriteria">
+            <enumerator name="FullString" value="0"/>
+            <enumerator name="FirstCharacter" value="1"/>
+        </enum>
+        <property name="property" type="string"/>
+        <property name="criteria" type="SectionCriteria"/>
+        <property name="delegate" type="Qt.Component"/>
+        <signal name="changed"/>
+        <signal name="delegateChanged"/>
+    </type>
+    <type name="Qt.FocusPanel" version="4.6" extends="Qt.Item">
+        <property name="active" type="bool"/>
+        <signal name="activeChanged"/>
+    </type>
+    <type name="Qt.ScriptAction" version="4.6" extends="QDeclarativeAbstractAnimation">
+        <property name="script" type="QDeclarativeScriptString"/>
+        <property name="stateChangeScriptName" type="string"/>
+    </type>
+    <type name="Qt">
+        <enum name="GlobalColor">
+            <enumerator name="color0" value="0"/>
+            <enumerator name="color1" value="1"/>
+            <enumerator name="black" value="2"/>
+            <enumerator name="white" value="3"/>
+            <enumerator name="darkGray" value="4"/>
+            <enumerator name="gray" value="5"/>
+            <enumerator name="lightGray" value="6"/>
+            <enumerator name="red" value="7"/>
+            <enumerator name="green" value="8"/>
+            <enumerator name="blue" value="9"/>
+            <enumerator name="cyan" value="10"/>
+            <enumerator name="magenta" value="11"/>
+            <enumerator name="yellow" value="12"/>
+            <enumerator name="darkRed" value="13"/>
+            <enumerator name="darkGreen" value="14"/>
+            <enumerator name="darkBlue" value="15"/>
+            <enumerator name="darkCyan" value="16"/>
+            <enumerator name="darkMagenta" value="17"/>
+            <enumerator name="darkYellow" value="18"/>
+            <enumerator name="transparent" value="19"/>
+        </enum>
+        <enum name="KeyboardModifiers">
+            <enumerator name="NoModifier" value="0"/>
+            <enumerator name="ShiftModifier" value="33554432"/>
+            <enumerator name="ControlModifier" value="67108864"/>
+            <enumerator name="AltModifier" value="134217728"/>
+            <enumerator name="MetaModifier" value="268435456"/>
+            <enumerator name="KeypadModifier" value="536870912"/>
+            <enumerator name="GroupSwitchModifier" value="1073741824"/>
+            <enumerator name="KeyboardModifierMask" value="-33554432"/>
+        </enum>
+        <enum name="MouseButtons">
+            <enumerator name="NoButton" value="0"/>
+            <enumerator name="LeftButton" value="1"/>
+            <enumerator name="RightButton" value="2"/>
+            <enumerator name="MidButton" value="4"/>
+            <enumerator name="XButton1" value="8"/>
+            <enumerator name="XButton2" value="16"/>
+            <enumerator name="MouseButtonMask" value="255"/>
+        </enum>
+        <enum name="Orientation">
+            <enumerator name="Horizontal" value="1"/>
+            <enumerator name="Vertical" value="2"/>
+        </enum>
+        <enum name="Orientations">
+            <enumerator name="Horizontal" value="1"/>
+            <enumerator name="Vertical" value="2"/>
+        </enum>
+        <enum name="FocusPolicy">
+            <enumerator name="NoFocus" value="0"/>
+            <enumerator name="TabFocus" value="1"/>
+            <enumerator name="ClickFocus" value="2"/>
+            <enumerator name="StrongFocus" value="11"/>
+            <enumerator name="WheelFocus" value="15"/>
+        </enum>
+        <enum name="SortOrder">
+            <enumerator name="AscendingOrder" value="0"/>
+            <enumerator name="DescendingOrder" value="1"/>
+        </enum>
+        <enum name="Alignment">
+            <enumerator name="AlignLeft" value="1"/>
+            <enumerator name="AlignLeading" value="1"/>
+            <enumerator name="AlignRight" value="2"/>
+            <enumerator name="AlignTrailing" value="2"/>
+            <enumerator name="AlignHCenter" value="4"/>
+            <enumerator name="AlignJustify" value="8"/>
+            <enumerator name="AlignAbsolute" value="16"/>
+            <enumerator name="AlignHorizontal_Mask" value="31"/>
+            <enumerator name="AlignTop" value="32"/>
+            <enumerator name="AlignBottom" value="64"/>
+            <enumerator name="AlignVCenter" value="128"/>
+            <enumerator name="AlignVertical_Mask" value="224"/>
+            <enumerator name="AlignCenter" value="132"/>
+        </enum>
+        <enum name="TextElideMode">
+            <enumerator name="ElideLeft" value="0"/>
+            <enumerator name="ElideRight" value="1"/>
+            <enumerator name="ElideMiddle" value="2"/>
+            <enumerator name="ElideNone" value="3"/>
+        </enum>
+        <enum name="WindowType">
+            <enumerator name="Widget" value="0"/>
+            <enumerator name="Window" value="1"/>
+            <enumerator name="Dialog" value="3"/>
+            <enumerator name="Sheet" value="5"/>
+            <enumerator name="Drawer" value="7"/>
+            <enumerator name="Popup" value="9"/>
+            <enumerator name="Tool" value="11"/>
+            <enumerator name="ToolTip" value="13"/>
+            <enumerator name="SplashScreen" value="15"/>
+            <enumerator name="Desktop" value="17"/>
+            <enumerator name="SubWindow" value="18"/>
+            <enumerator name="WindowType_Mask" value="255"/>
+            <enumerator name="MSWindowsFixedSizeDialogHint" value="256"/>
+            <enumerator name="MSWindowsOwnDC" value="512"/>
+            <enumerator name="X11BypassWindowManagerHint" value="1024"/>
+            <enumerator name="FramelessWindowHint" value="2048"/>
+            <enumerator name="WindowTitleHint" value="4096"/>
+            <enumerator name="WindowSystemMenuHint" value="8192"/>
+            <enumerator name="WindowMinimizeButtonHint" value="16384"/>
+            <enumerator name="WindowMaximizeButtonHint" value="32768"/>
+            <enumerator name="WindowMinMaxButtonsHint" value="49152"/>
+            <enumerator name="WindowContextHelpButtonHint" value="65536"/>
+            <enumerator name="WindowShadeButtonHint" value="131072"/>
+            <enumerator name="WindowStaysOnTopHint" value="262144"/>
+            <enumerator name="CustomizeWindowHint" value="33554432"/>
+            <enumerator name="WindowStaysOnBottomHint" value="67108864"/>
+            <enumerator name="WindowCloseButtonHint" value="134217728"/>
+            <enumerator name="MacWindowToolBarButtonHint" value="268435456"/>
+            <enumerator name="BypassGraphicsProxyWidget" value="536870912"/>
+            <enumerator name="WindowOkButtonHint" value="524288"/>
+            <enumerator name="WindowCancelButtonHint" value="1048576"/>
+        </enum>
+        <enum name="WindowFlags">
+            <enumerator name="Widget" value="0"/>
+            <enumerator name="Window" value="1"/>
+            <enumerator name="Dialog" value="3"/>
+            <enumerator name="Sheet" value="5"/>
+            <enumerator name="Drawer" value="7"/>
+            <enumerator name="Popup" value="9"/>
+            <enumerator name="Tool" value="11"/>
+            <enumerator name="ToolTip" value="13"/>
+            <enumerator name="SplashScreen" value="15"/>
+            <enumerator name="Desktop" value="17"/>
+            <enumerator name="SubWindow" value="18"/>
+            <enumerator name="WindowType_Mask" value="255"/>
+            <enumerator name="MSWindowsFixedSizeDialogHint" value="256"/>
+            <enumerator name="MSWindowsOwnDC" value="512"/>
+            <enumerator name="X11BypassWindowManagerHint" value="1024"/>
+            <enumerator name="FramelessWindowHint" value="2048"/>
+            <enumerator name="WindowTitleHint" value="4096"/>
+            <enumerator name="WindowSystemMenuHint" value="8192"/>
+            <enumerator name="WindowMinimizeButtonHint" value="16384"/>
+            <enumerator name="WindowMaximizeButtonHint" value="32768"/>
+            <enumerator name="WindowMinMaxButtonsHint" value="49152"/>
+            <enumerator name="WindowContextHelpButtonHint" value="65536"/>
+            <enumerator name="WindowShadeButtonHint" value="131072"/>
+            <enumerator name="WindowStaysOnTopHint" value="262144"/>
+            <enumerator name="CustomizeWindowHint" value="33554432"/>
+            <enumerator name="WindowStaysOnBottomHint" value="67108864"/>
+            <enumerator name="WindowCloseButtonHint" value="134217728"/>
+            <enumerator name="MacWindowToolBarButtonHint" value="268435456"/>
+            <enumerator name="BypassGraphicsProxyWidget" value="536870912"/>
+            <enumerator name="WindowOkButtonHint" value="524288"/>
+            <enumerator name="WindowCancelButtonHint" value="1048576"/>
+        </enum>
+        <enum name="WindowState">
+            <enumerator name="WindowNoState" value="0"/>
+            <enumerator name="WindowMinimized" value="1"/>
+            <enumerator name="WindowMaximized" value="2"/>
+            <enumerator name="WindowFullScreen" value="4"/>
+            <enumerator name="WindowActive" value="8"/>
+        </enum>
+        <enum name="WindowStates">
+            <enumerator name="WindowNoState" value="0"/>
+            <enumerator name="WindowMinimized" value="1"/>
+            <enumerator name="WindowMaximized" value="2"/>
+            <enumerator name="WindowFullScreen" value="4"/>
+            <enumerator name="WindowActive" value="8"/>
+        </enum>
+        <enum name="WidgetAttribute">
+            <enumerator name="WA_Disabled" value="0"/>
+            <enumerator name="WA_UnderMouse" value="1"/>
+            <enumerator name="WA_MouseTracking" value="2"/>
+            <enumerator name="WA_ContentsPropagated" value="3"/>
+            <enumerator name="WA_OpaquePaintEvent" value="4"/>
+            <enumerator name="WA_NoBackground" value="4"/>
+            <enumerator name="WA_StaticContents" value="5"/>
+            <enumerator name="WA_LaidOut" value="7"/>
+            <enumerator name="WA_PaintOnScreen" value="8"/>
+            <enumerator name="WA_NoSystemBackground" value="9"/>
+            <enumerator name="WA_UpdatesDisabled" value="10"/>
+            <enumerator name="WA_Mapped" value="11"/>
+            <enumerator name="WA_MacNoClickThrough" value="12"/>
+            <enumerator name="WA_PaintOutsidePaintEvent" value="13"/>
+            <enumerator name="WA_InputMethodEnabled" value="14"/>
+            <enumerator name="WA_WState_Visible" value="15"/>
+            <enumerator name="WA_WState_Hidden" value="16"/>
+            <enumerator name="WA_ForceDisabled" value="32"/>
+            <enumerator name="WA_KeyCompression" value="33"/>
+            <enumerator name="WA_PendingMoveEvent" value="34"/>
+            <enumerator name="WA_PendingResizeEvent" value="35"/>
+            <enumerator name="WA_SetPalette" value="36"/>
+            <enumerator name="WA_SetFont" value="37"/>
+            <enumerator name="WA_SetCursor" value="38"/>
+            <enumerator name="WA_NoChildEventsFromChildren" value="39"/>
+            <enumerator name="WA_WindowModified" value="41"/>
+            <enumerator name="WA_Resized" value="42"/>
+            <enumerator name="WA_Moved" value="43"/>
+            <enumerator name="WA_PendingUpdate" value="44"/>
+            <enumerator name="WA_InvalidSize" value="45"/>
+            <enumerator name="WA_MacBrushedMetal" value="46"/>
+            <enumerator name="WA_MacMetalStyle" value="46"/>
+            <enumerator name="WA_CustomWhatsThis" value="47"/>
+            <enumerator name="WA_LayoutOnEntireRect" value="48"/>
+            <enumerator name="WA_OutsideWSRange" value="49"/>
+            <enumerator name="WA_GrabbedShortcut" value="50"/>
+            <enumerator name="WA_TransparentForMouseEvents" value="51"/>
+            <enumerator name="WA_PaintUnclipped" value="52"/>
+            <enumerator name="WA_SetWindowIcon" value="53"/>
+            <enumerator name="WA_NoMouseReplay" value="54"/>
+            <enumerator name="WA_DeleteOnClose" value="55"/>
+            <enumerator name="WA_RightToLeft" value="56"/>
+            <enumerator name="WA_SetLayoutDirection" value="57"/>
+            <enumerator name="WA_NoChildEventsForParent" value="58"/>
+            <enumerator name="WA_ForceUpdatesDisabled" value="59"/>
+            <enumerator name="WA_WState_Created" value="60"/>
+            <enumerator name="WA_WState_CompressKeys" value="61"/>
+            <enumerator name="WA_WState_InPaintEvent" value="62"/>
+            <enumerator name="WA_WState_Reparented" value="63"/>
+            <enumerator name="WA_WState_ConfigPending" value="64"/>
+            <enumerator name="WA_WState_Polished" value="66"/>
+            <enumerator name="WA_WState_DND" value="67"/>
+            <enumerator name="WA_WState_OwnSizePolicy" value="68"/>
+            <enumerator name="WA_WState_ExplicitShowHide" value="69"/>
+            <enumerator name="WA_ShowModal" value="70"/>
+            <enumerator name="WA_MouseNoMask" value="71"/>
+            <enumerator name="WA_GroupLeader" value="72"/>
+            <enumerator name="WA_NoMousePropagation" value="73"/>
+            <enumerator name="WA_Hover" value="74"/>
+            <enumerator name="WA_InputMethodTransparent" value="75"/>
+            <enumerator name="WA_QuitOnClose" value="76"/>
+            <enumerator name="WA_KeyboardFocusChange" value="77"/>
+            <enumerator name="WA_AcceptDrops" value="78"/>
+            <enumerator name="WA_DropSiteRegistered" value="79"/>
+            <enumerator name="WA_ForceAcceptDrops" value="79"/>
+            <enumerator name="WA_WindowPropagation" value="80"/>
+            <enumerator name="WA_NoX11EventCompression" value="81"/>
+            <enumerator name="WA_TintedBackground" value="82"/>
+            <enumerator name="WA_X11OpenGLOverlay" value="83"/>
+            <enumerator name="WA_AlwaysShowToolTips" value="84"/>
+            <enumerator name="WA_MacOpaqueSizeGrip" value="85"/>
+            <enumerator name="WA_SetStyle" value="86"/>
+            <enumerator name="WA_SetLocale" value="87"/>
+            <enumerator name="WA_MacShowFocusRect" value="88"/>
+            <enumerator name="WA_MacNormalSize" value="89"/>
+            <enumerator name="WA_MacSmallSize" value="90"/>
+            <enumerator name="WA_MacMiniSize" value="91"/>
+            <enumerator name="WA_LayoutUsesWidgetRect" value="92"/>
+            <enumerator name="WA_StyledBackground" value="93"/>
+            <enumerator name="WA_MSWindowsUseDirect3D" value="94"/>
+            <enumerator name="WA_CanHostQMdiSubWindowTitleBar" value="95"/>
+            <enumerator name="WA_MacAlwaysShowToolWindow" value="96"/>
+            <enumerator name="WA_StyleSheet" value="97"/>
+            <enumerator name="WA_ShowWithoutActivating" value="98"/>
+            <enumerator name="WA_X11BypassTransientForHint" value="99"/>
+            <enumerator name="WA_NativeWindow" value="100"/>
+            <enumerator name="WA_DontCreateNativeAncestors" value="101"/>
+            <enumerator name="WA_MacVariableSize" value="102"/>
+            <enumerator name="WA_DontShowOnScreen" value="103"/>
+            <enumerator name="WA_X11NetWmWindowTypeDesktop" value="104"/>
+            <enumerator name="WA_X11NetWmWindowTypeDock" value="105"/>
+            <enumerator name="WA_X11NetWmWindowTypeToolBar" value="106"/>
+            <enumerator name="WA_X11NetWmWindowTypeMenu" value="107"/>
+            <enumerator name="WA_X11NetWmWindowTypeUtility" value="108"/>
+            <enumerator name="WA_X11NetWmWindowTypeSplash" value="109"/>
+            <enumerator name="WA_X11NetWmWindowTypeDialog" value="110"/>
+            <enumerator name="WA_X11NetWmWindowTypeDropDownMenu" value="111"/>
+            <enumerator name="WA_X11NetWmWindowTypePopupMenu" value="112"/>
+            <enumerator name="WA_X11NetWmWindowTypeToolTip" value="113"/>
+            <enumerator name="WA_X11NetWmWindowTypeNotification" value="114"/>
+            <enumerator name="WA_X11NetWmWindowTypeCombo" value="115"/>
+            <enumerator name="WA_X11NetWmWindowTypeDND" value="116"/>
+            <enumerator name="WA_MacFrameworkScaled" value="117"/>
+            <enumerator name="WA_SetWindowModality" value="118"/>
+            <enumerator name="WA_WState_WindowOpacitySet" value="119"/>
+            <enumerator name="WA_TranslucentBackground" value="120"/>
+            <enumerator name="WA_AcceptTouchEvents" value="121"/>
+            <enumerator name="WA_WState_AcceptedTouchBeginEvent" value="122"/>
+            <enumerator name="WA_TouchPadAcceptSingleTouchEvents" value="123"/>
+            <enumerator name="WA_MergeSoftkeys" value="124"/>
+            <enumerator name="WA_MergeSoftkeysRecursively" value="125"/>
+            <enumerator name="WA_AttributeCount" value="126"/>
+        </enum>
+        <enum name="ApplicationAttribute">
+            <enumerator name="AA_ImmediateWidgetCreation" value="0"/>
+            <enumerator name="AA_MSWindowsUseDirect3DByDefault" value="1"/>
+            <enumerator name="AA_DontShowIconsInMenus" value="2"/>
+            <enumerator name="AA_NativeWindows" value="3"/>
+            <enumerator name="AA_DontCreateNativeWidgetSiblings" value="4"/>
+            <enumerator name="AA_MacPluginApplication" value="5"/>
+            <enumerator name="AA_DontUseNativeMenuBar" value="6"/>
+            <enumerator name="AA_MacDontSwapCtrlAndMeta" value="7"/>
+            <enumerator name="AA_S60DontConstructApplicationPanes" value="8"/>
+            <enumerator name="AA_AttributeCount" value="9"/>
+        </enum>
+        <enum name="ImageConversionFlags">
+            <enumerator name="ColorMode_Mask" value="3"/>
+            <enumerator name="AutoColor" value="0"/>
+            <enumerator name="ColorOnly" value="3"/>
+            <enumerator name="MonoOnly" value="2"/>
+            <enumerator name="AlphaDither_Mask" value="12"/>
+            <enumerator name="ThresholdAlphaDither" value="0"/>
+            <enumerator name="OrderedAlphaDither" value="4"/>
+            <enumerator name="DiffuseAlphaDither" value="8"/>
+            <enumerator name="NoAlpha" value="12"/>
+            <enumerator name="Dither_Mask" value="48"/>
+            <enumerator name="DiffuseDither" value="0"/>
+            <enumerator name="OrderedDither" value="16"/>
+            <enumerator name="ThresholdDither" value="32"/>
+            <enumerator name="DitherMode_Mask" value="192"/>
+            <enumerator name="AutoDither" value="0"/>
+            <enumerator name="PreferDither" value="64"/>
+            <enumerator name="AvoidDither" value="128"/>
+            <enumerator name="NoOpaqueDetection" value="256"/>
+        </enum>
+        <enum name="BGMode">
+            <enumerator name="TransparentMode" value="0"/>
+            <enumerator name="OpaqueMode" value="1"/>
+        </enum>
+        <enum name="Key">
+            <enumerator name="Key_Escape" value="16777216"/>
+            <enumerator name="Key_Tab" value="16777217"/>
+            <enumerator name="Key_Backtab" value="16777218"/>
+            <enumerator name="Key_Backspace" value="16777219"/>
+            <enumerator name="Key_Return" value="16777220"/>
+            <enumerator name="Key_Enter" value="16777221"/>
+            <enumerator name="Key_Insert" value="16777222"/>
+            <enumerator name="Key_Delete" value="16777223"/>
+            <enumerator name="Key_Pause" value="16777224"/>
+            <enumerator name="Key_Print" value="16777225"/>
+            <enumerator name="Key_SysReq" value="16777226"/>
+            <enumerator name="Key_Clear" value="16777227"/>
+            <enumerator name="Key_Home" value="16777232"/>
+            <enumerator name="Key_End" value="16777233"/>
+            <enumerator name="Key_Left" value="16777234"/>
+            <enumerator name="Key_Up" value="16777235"/>
+            <enumerator name="Key_Right" value="16777236"/>
+            <enumerator name="Key_Down" value="16777237"/>
+            <enumerator name="Key_PageUp" value="16777238"/>
+            <enumerator name="Key_PageDown" value="16777239"/>
+            <enumerator name="Key_Shift" value="16777248"/>
+            <enumerator name="Key_Control" value="16777249"/>
+            <enumerator name="Key_Meta" value="16777250"/>
+            <enumerator name="Key_Alt" value="16777251"/>
+            <enumerator name="Key_CapsLock" value="16777252"/>
+            <enumerator name="Key_NumLock" value="16777253"/>
+            <enumerator name="Key_ScrollLock" value="16777254"/>
+            <enumerator name="Key_F1" value="16777264"/>
+            <enumerator name="Key_F2" value="16777265"/>
+            <enumerator name="Key_F3" value="16777266"/>
+            <enumerator name="Key_F4" value="16777267"/>
+            <enumerator name="Key_F5" value="16777268"/>
+            <enumerator name="Key_F6" value="16777269"/>
+            <enumerator name="Key_F7" value="16777270"/>
+            <enumerator name="Key_F8" value="16777271"/>
+            <enumerator name="Key_F9" value="16777272"/>
+            <enumerator name="Key_F10" value="16777273"/>
+            <enumerator name="Key_F11" value="16777274"/>
+            <enumerator name="Key_F12" value="16777275"/>
+            <enumerator name="Key_F13" value="16777276"/>
+            <enumerator name="Key_F14" value="16777277"/>
+            <enumerator name="Key_F15" value="16777278"/>
+            <enumerator name="Key_F16" value="16777279"/>
+            <enumerator name="Key_F17" value="16777280"/>
+            <enumerator name="Key_F18" value="16777281"/>
+            <enumerator name="Key_F19" value="16777282"/>
+            <enumerator name="Key_F20" value="16777283"/>
+            <enumerator name="Key_F21" value="16777284"/>
+            <enumerator name="Key_F22" value="16777285"/>
+            <enumerator name="Key_F23" value="16777286"/>
+            <enumerator name="Key_F24" value="16777287"/>
+            <enumerator name="Key_F25" value="16777288"/>
+            <enumerator name="Key_F26" value="16777289"/>
+            <enumerator name="Key_F27" value="16777290"/>
+            <enumerator name="Key_F28" value="16777291"/>
+            <enumerator name="Key_F29" value="16777292"/>
+            <enumerator name="Key_F30" value="16777293"/>
+            <enumerator name="Key_F31" value="16777294"/>
+            <enumerator name="Key_F32" value="16777295"/>
+            <enumerator name="Key_F33" value="16777296"/>
+            <enumerator name="Key_F34" value="16777297"/>
+            <enumerator name="Key_F35" value="16777298"/>
+            <enumerator name="Key_Super_L" value="16777299"/>
+            <enumerator name="Key_Super_R" value="16777300"/>
+            <enumerator name="Key_Menu" value="16777301"/>
+            <enumerator name="Key_Hyper_L" value="16777302"/>
+            <enumerator name="Key_Hyper_R" value="16777303"/>
+            <enumerator name="Key_Help" value="16777304"/>
+            <enumerator name="Key_Direction_L" value="16777305"/>
+            <enumerator name="Key_Direction_R" value="16777312"/>
+            <enumerator name="Key_Space" value="32"/>
+            <enumerator name="Key_Any" value="32"/>
+            <enumerator name="Key_Exclam" value="33"/>
+            <enumerator name="Key_QuoteDbl" value="34"/>
+            <enumerator name="Key_NumberSign" value="35"/>
+            <enumerator name="Key_Dollar" value="36"/>
+            <enumerator name="Key_Percent" value="37"/>
+            <enumerator name="Key_Ampersand" value="38"/>
+            <enumerator name="Key_Apostrophe" value="39"/>
+            <enumerator name="Key_ParenLeft" value="40"/>
+            <enumerator name="Key_ParenRight" value="41"/>
+            <enumerator name="Key_Asterisk" value="42"/>
+            <enumerator name="Key_Plus" value="43"/>
+            <enumerator name="Key_Comma" value="44"/>
+            <enumerator name="Key_Minus" value="45"/>
+            <enumerator name="Key_Period" value="46"/>
+            <enumerator name="Key_Slash" value="47"/>
+            <enumerator name="Key_0" value="48"/>
+            <enumerator name="Key_1" value="49"/>
+            <enumerator name="Key_2" value="50"/>
+            <enumerator name="Key_3" value="51"/>
+            <enumerator name="Key_4" value="52"/>
+            <enumerator name="Key_5" value="53"/>
+            <enumerator name="Key_6" value="54"/>
+            <enumerator name="Key_7" value="55"/>
+            <enumerator name="Key_8" value="56"/>
+            <enumerator name="Key_9" value="57"/>
+            <enumerator name="Key_Colon" value="58"/>
+            <enumerator name="Key_Semicolon" value="59"/>
+            <enumerator name="Key_Less" value="60"/>
+            <enumerator name="Key_Equal" value="61"/>
+            <enumerator name="Key_Greater" value="62"/>
+            <enumerator name="Key_Question" value="63"/>
+            <enumerator name="Key_At" value="64"/>
+            <enumerator name="Key_A" value="65"/>
+            <enumerator name="Key_B" value="66"/>
+            <enumerator name="Key_C" value="67"/>
+            <enumerator name="Key_D" value="68"/>
+            <enumerator name="Key_E" value="69"/>
+            <enumerator name="Key_F" value="70"/>
+            <enumerator name="Key_G" value="71"/>
+            <enumerator name="Key_H" value="72"/>
+            <enumerator name="Key_I" value="73"/>
+            <enumerator name="Key_J" value="74"/>
+            <enumerator name="Key_K" value="75"/>
+            <enumerator name="Key_L" value="76"/>
+            <enumerator name="Key_M" value="77"/>
+            <enumerator name="Key_N" value="78"/>
+            <enumerator name="Key_O" value="79"/>
+            <enumerator name="Key_P" value="80"/>
+            <enumerator name="Key_Q" value="81"/>
+            <enumerator name="Key_R" value="82"/>
+            <enumerator name="Key_S" value="83"/>
+            <enumerator name="Key_T" value="84"/>
+            <enumerator name="Key_U" value="85"/>
+            <enumerator name="Key_V" value="86"/>
+            <enumerator name="Key_W" value="87"/>
+            <enumerator name="Key_X" value="88"/>
+            <enumerator name="Key_Y" value="89"/>
+            <enumerator name="Key_Z" value="90"/>
+            <enumerator name="Key_BracketLeft" value="91"/>
+            <enumerator name="Key_Backslash" value="92"/>
+            <enumerator name="Key_BracketRight" value="93"/>
+            <enumerator name="Key_AsciiCircum" value="94"/>
+            <enumerator name="Key_Underscore" value="95"/>
+            <enumerator name="Key_QuoteLeft" value="96"/>
+            <enumerator name="Key_BraceLeft" value="123"/>
+            <enumerator name="Key_Bar" value="124"/>
+            <enumerator name="Key_BraceRight" value="125"/>
+            <enumerator name="Key_AsciiTilde" value="126"/>
+            <enumerator name="Key_nobreakspace" value="160"/>
+            <enumerator name="Key_exclamdown" value="161"/>
+            <enumerator name="Key_cent" value="162"/>
+            <enumerator name="Key_sterling" value="163"/>
+            <enumerator name="Key_currency" value="164"/>
+            <enumerator name="Key_yen" value="165"/>
+            <enumerator name="Key_brokenbar" value="166"/>
+            <enumerator name="Key_section" value="167"/>
+            <enumerator name="Key_diaeresis" value="168"/>
+            <enumerator name="Key_copyright" value="169"/>
+            <enumerator name="Key_ordfeminine" value="170"/>
+            <enumerator name="Key_guillemotleft" value="171"/>
+            <enumerator name="Key_notsign" value="172"/>
+            <enumerator name="Key_hyphen" value="173"/>
+            <enumerator name="Key_registered" value="174"/>
+            <enumerator name="Key_macron" value="175"/>
+            <enumerator name="Key_degree" value="176"/>
+            <enumerator name="Key_plusminus" value="177"/>
+            <enumerator name="Key_twosuperior" value="178"/>
+            <enumerator name="Key_threesuperior" value="179"/>
+            <enumerator name="Key_acute" value="180"/>
+            <enumerator name="Key_mu" value="181"/>
+            <enumerator name="Key_paragraph" value="182"/>
+            <enumerator name="Key_periodcentered" value="183"/>
+            <enumerator name="Key_cedilla" value="184"/>
+            <enumerator name="Key_onesuperior" value="185"/>
+            <enumerator name="Key_masculine" value="186"/>
+            <enumerator name="Key_guillemotright" value="187"/>
+            <enumerator name="Key_onequarter" value="188"/>
+            <enumerator name="Key_onehalf" value="189"/>
+            <enumerator name="Key_threequarters" value="190"/>
+            <enumerator name="Key_questiondown" value="191"/>
+            <enumerator name="Key_Agrave" value="192"/>
+            <enumerator name="Key_Aacute" value="193"/>
+            <enumerator name="Key_Acircumflex" value="194"/>
+            <enumerator name="Key_Atilde" value="195"/>
+            <enumerator name="Key_Adiaeresis" value="196"/>
+            <enumerator name="Key_Aring" value="197"/>
+            <enumerator name="Key_AE" value="198"/>
+            <enumerator name="Key_Ccedilla" value="199"/>
+            <enumerator name="Key_Egrave" value="200"/>
+            <enumerator name="Key_Eacute" value="201"/>
+            <enumerator name="Key_Ecircumflex" value="202"/>
+            <enumerator name="Key_Ediaeresis" value="203"/>
+            <enumerator name="Key_Igrave" value="204"/>
+            <enumerator name="Key_Iacute" value="205"/>
+            <enumerator name="Key_Icircumflex" value="206"/>
+            <enumerator name="Key_Idiaeresis" value="207"/>
+            <enumerator name="Key_ETH" value="208"/>
+            <enumerator name="Key_Ntilde" value="209"/>
+            <enumerator name="Key_Ograve" value="210"/>
+            <enumerator name="Key_Oacute" value="211"/>
+            <enumerator name="Key_Ocircumflex" value="212"/>
+            <enumerator name="Key_Otilde" value="213"/>
+            <enumerator name="Key_Odiaeresis" value="214"/>
+            <enumerator name="Key_multiply" value="215"/>
+            <enumerator name="Key_Ooblique" value="216"/>
+            <enumerator name="Key_Ugrave" value="217"/>
+            <enumerator name="Key_Uacute" value="218"/>
+            <enumerator name="Key_Ucircumflex" value="219"/>
+            <enumerator name="Key_Udiaeresis" value="220"/>
+            <enumerator name="Key_Yacute" value="221"/>
+            <enumerator name="Key_THORN" value="222"/>
+            <enumerator name="Key_ssharp" value="223"/>
+            <enumerator name="Key_division" value="247"/>
+            <enumerator name="Key_ydiaeresis" value="255"/>
+            <enumerator name="Key_AltGr" value="16781571"/>
+            <enumerator name="Key_Multi_key" value="16781600"/>
+            <enumerator name="Key_Codeinput" value="16781623"/>
+            <enumerator name="Key_SingleCandidate" value="16781628"/>
+            <enumerator name="Key_MultipleCandidate" value="16781629"/>
+            <enumerator name="Key_PreviousCandidate" value="16781630"/>
+            <enumerator name="Key_Mode_switch" value="16781694"/>
+            <enumerator name="Key_Kanji" value="16781601"/>
+            <enumerator name="Key_Muhenkan" value="16781602"/>
+            <enumerator name="Key_Henkan" value="16781603"/>
+            <enumerator name="Key_Romaji" value="16781604"/>
+            <enumerator name="Key_Hiragana" value="16781605"/>
+            <enumerator name="Key_Katakana" value="16781606"/>
+            <enumerator name="Key_Hiragana_Katakana" value="16781607"/>
+            <enumerator name="Key_Zenkaku" value="16781608"/>
+            <enumerator name="Key_Hankaku" value="16781609"/>
+            <enumerator name="Key_Zenkaku_Hankaku" value="16781610"/>
+            <enumerator name="Key_Touroku" value="16781611"/>
+            <enumerator name="Key_Massyo" value="16781612"/>
+            <enumerator name="Key_Kana_Lock" value="16781613"/>
+            <enumerator name="Key_Kana_Shift" value="16781614"/>
+            <enumerator name="Key_Eisu_Shift" value="16781615"/>
+            <enumerator name="Key_Eisu_toggle" value="16781616"/>
+            <enumerator name="Key_Hangul" value="16781617"/>
+            <enumerator name="Key_Hangul_Start" value="16781618"/>
+            <enumerator name="Key_Hangul_End" value="16781619"/>
+            <enumerator name="Key_Hangul_Hanja" value="16781620"/>
+            <enumerator name="Key_Hangul_Jamo" value="16781621"/>
+            <enumerator name="Key_Hangul_Romaja" value="16781622"/>
+            <enumerator name="Key_Hangul_Jeonja" value="16781624"/>
+            <enumerator name="Key_Hangul_Banja" value="16781625"/>
+            <enumerator name="Key_Hangul_PreHanja" value="16781626"/>
+            <enumerator name="Key_Hangul_PostHanja" value="16781627"/>
+            <enumerator name="Key_Hangul_Special" value="16781631"/>
+            <enumerator name="Key_Dead_Grave" value="16781904"/>
+            <enumerator name="Key_Dead_Acute" value="16781905"/>
+            <enumerator name="Key_Dead_Circumflex" value="16781906"/>
+            <enumerator name="Key_Dead_Tilde" value="16781907"/>
+            <enumerator name="Key_Dead_Macron" value="16781908"/>
+            <enumerator name="Key_Dead_Breve" value="16781909"/>
+            <enumerator name="Key_Dead_Abovedot" value="16781910"/>
+            <enumerator name="Key_Dead_Diaeresis" value="16781911"/>
+            <enumerator name="Key_Dead_Abovering" value="16781912"/>
+            <enumerator name="Key_Dead_Doubleacute" value="16781913"/>
+            <enumerator name="Key_Dead_Caron" value="16781914"/>
+            <enumerator name="Key_Dead_Cedilla" value="16781915"/>
+            <enumerator name="Key_Dead_Ogonek" value="16781916"/>
+            <enumerator name="Key_Dead_Iota" value="16781917"/>
+            <enumerator name="Key_Dead_Voiced_Sound" value="16781918"/>
+            <enumerator name="Key_Dead_Semivoiced_Sound" value="16781919"/>
+            <enumerator name="Key_Dead_Belowdot" value="16781920"/>
+            <enumerator name="Key_Dead_Hook" value="16781921"/>
+            <enumerator name="Key_Dead_Horn" value="16781922"/>
+            <enumerator name="Key_Back" value="16777313"/>
+            <enumerator name="Key_Forward" value="16777314"/>
+            <enumerator name="Key_Stop" value="16777315"/>
+            <enumerator name="Key_Refresh" value="16777316"/>
+            <enumerator name="Key_VolumeDown" value="16777328"/>
+            <enumerator name="Key_VolumeMute" value="16777329"/>
+            <enumerator name="Key_VolumeUp" value="16777330"/>
+            <enumerator name="Key_BassBoost" value="16777331"/>
+            <enumerator name="Key_BassUp" value="16777332"/>
+            <enumerator name="Key_BassDown" value="16777333"/>
+            <enumerator name="Key_TrebleUp" value="16777334"/>
+            <enumerator name="Key_TrebleDown" value="16777335"/>
+            <enumerator name="Key_MediaPlay" value="16777344"/>
+            <enumerator name="Key_MediaStop" value="16777345"/>
+            <enumerator name="Key_MediaPrevious" value="16777346"/>
+            <enumerator name="Key_MediaNext" value="16777347"/>
+            <enumerator name="Key_MediaRecord" value="16777348"/>
+            <enumerator name="Key_HomePage" value="16777360"/>
+            <enumerator name="Key_Favorites" value="16777361"/>
+            <enumerator name="Key_Search" value="16777362"/>
+            <enumerator name="Key_Standby" value="16777363"/>
+            <enumerator name="Key_OpenUrl" value="16777364"/>
+            <enumerator name="Key_LaunchMail" value="16777376"/>
+            <enumerator name="Key_LaunchMedia" value="16777377"/>
+            <enumerator name="Key_Launch0" value="16777378"/>
+            <enumerator name="Key_Launch1" value="16777379"/>
+            <enumerator name="Key_Launch2" value="16777380"/>
+            <enumerator name="Key_Launch3" value="16777381"/>
+            <enumerator name="Key_Launch4" value="16777382"/>
+            <enumerator name="Key_Launch5" value="16777383"/>
+            <enumerator name="Key_Launch6" value="16777384"/>
+            <enumerator name="Key_Launch7" value="16777385"/>
+            <enumerator name="Key_Launch8" value="16777386"/>
+            <enumerator name="Key_Launch9" value="16777387"/>
+            <enumerator name="Key_LaunchA" value="16777388"/>
+            <enumerator name="Key_LaunchB" value="16777389"/>
+            <enumerator name="Key_LaunchC" value="16777390"/>
+            <enumerator name="Key_LaunchD" value="16777391"/>
+            <enumerator name="Key_LaunchE" value="16777392"/>
+            <enumerator name="Key_LaunchF" value="16777393"/>
+            <enumerator name="Key_MonBrightnessUp" value="16777394"/>
+            <enumerator name="Key_MonBrightnessDown" value="16777395"/>
+            <enumerator name="Key_KeyboardLightOnOff" value="16777396"/>
+            <enumerator name="Key_KeyboardBrightnessUp" value="16777397"/>
+            <enumerator name="Key_KeyboardBrightnessDown" value="16777398"/>
+            <enumerator name="Key_PowerOff" value="16777399"/>
+            <enumerator name="Key_WakeUp" value="16777400"/>
+            <enumerator name="Key_Eject" value="16777401"/>
+            <enumerator name="Key_ScreenSaver" value="16777402"/>
+            <enumerator name="Key_WWW" value="16777403"/>
+            <enumerator name="Key_Memo" value="16777404"/>
+            <enumerator name="Key_LightBulb" value="16777405"/>
+            <enumerator name="Key_Shop" value="16777406"/>
+            <enumerator name="Key_History" value="16777407"/>
+            <enumerator name="Key_AddFavorite" value="16777408"/>
+            <enumerator name="Key_HotLinks" value="16777409"/>
+            <enumerator name="Key_BrightnessAdjust" value="16777410"/>
+            <enumerator name="Key_Finance" value="16777411"/>
+            <enumerator name="Key_Community" value="16777412"/>
+            <enumerator name="Key_AudioRewind" value="16777413"/>
+            <enumerator name="Key_BackForward" value="16777414"/>
+            <enumerator name="Key_ApplicationLeft" value="16777415"/>
+            <enumerator name="Key_ApplicationRight" value="16777416"/>
+            <enumerator name="Key_Book" value="16777417"/>
+            <enumerator name="Key_CD" value="16777418"/>
+            <enumerator name="Key_Calculator" value="16777419"/>
+            <enumerator name="Key_ToDoList" value="16777420"/>
+            <enumerator name="Key_ClearGrab" value="16777421"/>
+            <enumerator name="Key_Close" value="16777422"/>
+            <enumerator name="Key_Copy" value="16777423"/>
+            <enumerator name="Key_Cut" value="16777424"/>
+            <enumerator name="Key_Display" value="16777425"/>
+            <enumerator name="Key_DOS" value="16777426"/>
+            <enumerator name="Key_Documents" value="16777427"/>
+            <enumerator name="Key_Excel" value="16777428"/>
+            <enumerator name="Key_Explorer" value="16777429"/>
+            <enumerator name="Key_Game" value="16777430"/>
+            <enumerator name="Key_Go" value="16777431"/>
+            <enumerator name="Key_iTouch" value="16777432"/>
+            <enumerator name="Key_LogOff" value="16777433"/>
+            <enumerator name="Key_Market" value="16777434"/>
+            <enumerator name="Key_Meeting" value="16777435"/>
+            <enumerator name="Key_MenuKB" value="16777436"/>
+            <enumerator name="Key_MenuPB" value="16777437"/>
+            <enumerator name="Key_MySites" value="16777438"/>
+            <enumerator name="Key_News" value="16777439"/>
+            <enumerator name="Key_OfficeHome" value="16777440"/>
+            <enumerator name="Key_Option" value="16777441"/>
+            <enumerator name="Key_Paste" value="16777442"/>
+            <enumerator name="Key_Phone" value="16777443"/>
+            <enumerator name="Key_Calendar" value="16777444"/>
+            <enumerator name="Key_Reply" value="16777445"/>
+            <enumerator name="Key_Reload" value="16777446"/>
+            <enumerator name="Key_RotateWindows" value="16777447"/>
+            <enumerator name="Key_RotationPB" value="16777448"/>
+            <enumerator name="Key_RotationKB" value="16777449"/>
+            <enumerator name="Key_Save" value="16777450"/>
+            <enumerator name="Key_Send" value="16777451"/>
+            <enumerator name="Key_Spell" value="16777452"/>
+            <enumerator name="Key_SplitScreen" value="16777453"/>
+            <enumerator name="Key_Support" value="16777454"/>
+            <enumerator name="Key_TaskPane" value="16777455"/>
+            <enumerator name="Key_Terminal" value="16777456"/>
+            <enumerator name="Key_Tools" value="16777457"/>
+            <enumerator name="Key_Travel" value="16777458"/>
+            <enumerator name="Key_Video" value="16777459"/>
+            <enumerator name="Key_Word" value="16777460"/>
+            <enumerator name="Key_Xfer" value="16777461"/>
+            <enumerator name="Key_ZoomIn" value="16777462"/>
+            <enumerator name="Key_ZoomOut" value="16777463"/>
+            <enumerator name="Key_Away" value="16777464"/>
+            <enumerator name="Key_Messenger" value="16777465"/>
+            <enumerator name="Key_WebCam" value="16777466"/>
+            <enumerator name="Key_MailForward" value="16777467"/>
+            <enumerator name="Key_Pictures" value="16777468"/>
+            <enumerator name="Key_Music" value="16777469"/>
+            <enumerator name="Key_Battery" value="16777470"/>
+            <enumerator name="Key_Bluetooth" value="16777471"/>
+            <enumerator name="Key_WLAN" value="16777472"/>
+            <enumerator name="Key_UWB" value="16777473"/>
+            <enumerator name="Key_AudioForward" value="16777474"/>
+            <enumerator name="Key_AudioRepeat" value="16777475"/>
+            <enumerator name="Key_AudioRandomPlay" value="16777476"/>
+            <enumerator name="Key_Subtitle" value="16777477"/>
+            <enumerator name="Key_AudioCycleTrack" value="16777478"/>
+            <enumerator name="Key_Time" value="16777479"/>
+            <enumerator name="Key_Hibernate" value="16777480"/>
+            <enumerator name="Key_View" value="16777481"/>
+            <enumerator name="Key_TopMenu" value="16777482"/>
+            <enumerator name="Key_PowerDown" value="16777483"/>
+            <enumerator name="Key_Suspend" value="16777484"/>
+            <enumerator name="Key_ContrastAdjust" value="16777485"/>
+            <enumerator name="Key_MediaLast" value="16842751"/>
+            <enumerator name="Key_Select" value="16842752"/>
+            <enumerator name="Key_Yes" value="16842753"/>
+            <enumerator name="Key_No" value="16842754"/>
+            <enumerator name="Key_Cancel" value="16908289"/>
+            <enumerator name="Key_Printer" value="16908290"/>
+            <enumerator name="Key_Execute" value="16908291"/>
+            <enumerator name="Key_Sleep" value="16908292"/>
+            <enumerator name="Key_Play" value="16908293"/>
+            <enumerator name="Key_Zoom" value="16908294"/>
+            <enumerator name="Key_Context1" value="17825792"/>
+            <enumerator name="Key_Context2" value="17825793"/>
+            <enumerator name="Key_Context3" value="17825794"/>
+            <enumerator name="Key_Context4" value="17825795"/>
+            <enumerator name="Key_Call" value="17825796"/>
+            <enumerator name="Key_Hangup" value="17825797"/>
+            <enumerator name="Key_Flip" value="17825798"/>
+            <enumerator name="Key_unknown" value="33554431"/>
+        </enum>
+        <enum name="ArrowType">
+            <enumerator name="NoArrow" value="0"/>
+            <enumerator name="UpArrow" value="1"/>
+            <enumerator name="DownArrow" value="2"/>
+            <enumerator name="LeftArrow" value="3"/>
+            <enumerator name="RightArrow" value="4"/>
+        </enum>
+        <enum name="PenStyle">
+            <enumerator name="NoPen" value="0"/>
+            <enumerator name="SolidLine" value="1"/>
+            <enumerator name="DashLine" value="2"/>
+            <enumerator name="DotLine" value="3"/>
+            <enumerator name="DashDotLine" value="4"/>
+            <enumerator name="DashDotDotLine" value="5"/>
+            <enumerator name="CustomDashLine" value="6"/>
+        </enum>
+        <enum name="PenCapStyle">
+            <enumerator name="FlatCap" value="0"/>
+            <enumerator name="SquareCap" value="16"/>
+            <enumerator name="RoundCap" value="32"/>
+            <enumerator name="MPenCapStyle" value="48"/>
+        </enum>
+        <enum name="PenJoinStyle">
+            <enumerator name="MiterJoin" value="0"/>
+            <enumerator name="BevelJoin" value="64"/>
+            <enumerator name="RoundJoin" value="128"/>
+            <enumerator name="SvgMiterJoin" value="256"/>
+            <enumerator name="MPenJoinStyle" value="448"/>
+        </enum>
+        <enum name="BrushStyle">
+            <enumerator name="NoBrush" value="0"/>
+            <enumerator name="SolidPattern" value="1"/>
+            <enumerator name="Dense1Pattern" value="2"/>
+            <enumerator name="Dense2Pattern" value="3"/>
+            <enumerator name="Dense3Pattern" value="4"/>
+            <enumerator name="Dense4Pattern" value="5"/>
+            <enumerator name="Dense5Pattern" value="6"/>
+            <enumerator name="Dense6Pattern" value="7"/>
+            <enumerator name="Dense7Pattern" value="8"/>
+            <enumerator name="HorPattern" value="9"/>
+            <enumerator name="VerPattern" value="10"/>
+            <enumerator name="CrossPattern" value="11"/>
+            <enumerator name="BDiagPattern" value="12"/>
+            <enumerator name="FDiagPattern" value="13"/>
+            <enumerator name="DiagCrossPattern" value="14"/>
+            <enumerator name="LinearGradientPattern" value="15"/>
+            <enumerator name="RadialGradientPattern" value="16"/>
+            <enumerator name="ConicalGradientPattern" value="17"/>
+            <enumerator name="TexturePattern" value="24"/>
+        </enum>
+        <enum name="SizeMode">
+            <enumerator name="AbsoluteSize" value="0"/>
+            <enumerator name="RelativeSize" value="1"/>
+        </enum>
+        <enum name="CursorShape">
+            <enumerator name="ArrowCursor" value="0"/>
+            <enumerator name="UpArrowCursor" value="1"/>
+            <enumerator name="CrossCursor" value="2"/>
+            <enumerator name="WaitCursor" value="3"/>
+            <enumerator name="IBeamCursor" value="4"/>
+            <enumerator name="SizeVerCursor" value="5"/>
+            <enumerator name="SizeHorCursor" value="6"/>
+            <enumerator name="SizeBDiagCursor" value="7"/>
+            <enumerator name="SizeFDiagCursor" value="8"/>
+            <enumerator name="SizeAllCursor" value="9"/>
+            <enumerator name="BlankCursor" value="10"/>
+            <enumerator name="SplitVCursor" value="11"/>
+            <enumerator name="SplitHCursor" value="12"/>
+            <enumerator name="PointingHandCursor" value="13"/>
+            <enumerator name="ForbiddenCursor" value="14"/>
+            <enumerator name="WhatsThisCursor" value="15"/>
+            <enumerator name="BusyCursor" value="16"/>
+            <enumerator name="OpenHandCursor" value="17"/>
+            <enumerator name="ClosedHandCursor" value="18"/>
+            <enumerator name="DragCopyCursor" value="19"/>
+            <enumerator name="DragMoveCursor" value="20"/>
+            <enumerator name="DragLinkCursor" value="21"/>
+            <enumerator name="LastCursor" value="21"/>
+            <enumerator name="BitmapCursor" value="24"/>
+            <enumerator name="CustomCursor" value="25"/>
+        </enum>
+        <enum name="TextFormat">
+            <enumerator name="PlainText" value="0"/>
+            <enumerator name="RichText" value="1"/>
+            <enumerator name="AutoText" value="2"/>
+            <enumerator name="LogText" value="3"/>
+        </enum>
+        <enum name="AspectRatioMode">
+            <enumerator name="IgnoreAspectRatio" value="0"/>
+            <enumerator name="KeepAspectRatio" value="1"/>
+            <enumerator name="KeepAspectRatioByExpanding" value="2"/>
+        </enum>
+        <enum name="DockWidgetArea">
+            <enumerator name="LeftDockWidgetArea" value="1"/>
+            <enumerator name="RightDockWidgetArea" value="2"/>
+            <enumerator name="TopDockWidgetArea" value="4"/>
+            <enumerator name="BottomDockWidgetArea" value="8"/>
+            <enumerator name="DockWidgetArea_Mask" value="15"/>
+            <enumerator name="AllDockWidgetAreas" value="15"/>
+            <enumerator name="NoDockWidgetArea" value="0"/>
+        </enum>
+        <enum name="DockWidgetAreas">
+            <enumerator name="LeftDockWidgetArea" value="1"/>
+            <enumerator name="RightDockWidgetArea" value="2"/>
+            <enumerator name="TopDockWidgetArea" value="4"/>
+            <enumerator name="BottomDockWidgetArea" value="8"/>
+            <enumerator name="DockWidgetArea_Mask" value="15"/>
+            <enumerator name="AllDockWidgetAreas" value="15"/>
+            <enumerator name="NoDockWidgetArea" value="0"/>
+        </enum>
+        <enum name="ToolBarArea">
+            <enumerator name="LeftToolBarArea" value="1"/>
+            <enumerator name="RightToolBarArea" value="2"/>
+            <enumerator name="TopToolBarArea" value="4"/>
+            <enumerator name="BottomToolBarArea" value="8"/>
+            <enumerator name="ToolBarArea_Mask" value="15"/>
+            <enumerator name="AllToolBarAreas" value="15"/>
+            <enumerator name="NoToolBarArea" value="0"/>
+        </enum>
+        <enum name="ToolBarAreas">
+            <enumerator name="LeftToolBarArea" value="1"/>
+            <enumerator name="RightToolBarArea" value="2"/>
+            <enumerator name="TopToolBarArea" value="4"/>
+            <enumerator name="BottomToolBarArea" value="8"/>
+            <enumerator name="ToolBarArea_Mask" value="15"/>
+            <enumerator name="AllToolBarAreas" value="15"/>
+            <enumerator name="NoToolBarArea" value="0"/>
+        </enum>
+        <enum name="DateFormat">
+            <enumerator name="TextDate" value="0"/>
+            <enumerator name="ISODate" value="1"/>
+            <enumerator name="SystemLocaleDate" value="2"/>
+            <enumerator name="LocalDate" value="2"/>
+            <enumerator name="LocaleDate" value="3"/>
+            <enumerator name="SystemLocaleShortDate" value="4"/>
+            <enumerator name="SystemLocaleLongDate" value="5"/>
+            <enumerator name="DefaultLocaleShortDate" value="6"/>
+            <enumerator name="DefaultLocaleLongDate" value="7"/>
+        </enum>
+        <enum name="TimeSpec">
+            <enumerator name="LocalTime" value="0"/>
+            <enumerator name="UTC" value="1"/>
+            <enumerator name="OffsetFromUTC" value="2"/>
+        </enum>
+        <enum name="DayOfWeek">
+            <enumerator name="Monday" value="1"/>
+            <enumerator name="Tuesday" value="2"/>
+            <enumerator name="Wednesday" value="3"/>
+            <enumerator name="Thursday" value="4"/>
+            <enumerator name="Friday" value="5"/>
+            <enumerator name="Saturday" value="6"/>
+            <enumerator name="Sunday" value="7"/>
+        </enum>
+        <enum name="ScrollBarPolicy">
+            <enumerator name="ScrollBarAsNeeded" value="0"/>
+            <enumerator name="ScrollBarAlwaysOff" value="1"/>
+            <enumerator name="ScrollBarAlwaysOn" value="2"/>
+        </enum>
+        <enum name="CaseSensitivity">
+            <enumerator name="CaseInsensitive" value="0"/>
+            <enumerator name="CaseSensitive" value="1"/>
+        </enum>
+        <enum name="Corner">
+            <enumerator name="TopLeftCorner" value="0"/>
+            <enumerator name="TopRightCorner" value="1"/>
+            <enumerator name="BottomLeftCorner" value="2"/>
+            <enumerator name="BottomRightCorner" value="3"/>
+        </enum>
+        <enum name="ConnectionType">
+            <enumerator name="AutoConnection" value="0"/>
+            <enumerator name="DirectConnection" value="1"/>
+            <enumerator name="QueuedConnection" value="2"/>
+            <enumerator name="AutoCompatConnection" value="3"/>
+            <enumerator name="BlockingQueuedConnection" value="4"/>
+            <enumerator name="UniqueConnection" value="128"/>
+        </enum>
+        <enum name="ShortcutContext">
+            <enumerator name="WidgetShortcut" value="0"/>
+            <enumerator name="WindowShortcut" value="1"/>
+            <enumerator name="ApplicationShortcut" value="2"/>
+            <enumerator name="WidgetWithChildrenShortcut" value="3"/>
+        </enum>
+        <enum name="FillRule">
+            <enumerator name="OddEvenFill" value="0"/>
+            <enumerator name="WindingFill" value="1"/>
+        </enum>
+        <enum name="MaskMode">
+            <enumerator name="MaskInColor" value="0"/>
+            <enumerator name="MaskOutColor" value="1"/>
+        </enum>
+        <enum name="ClipOperation">
+            <enumerator name="NoClip" value="0"/>
+            <enumerator name="ReplaceClip" value="1"/>
+            <enumerator name="IntersectClip" value="2"/>
+            <enumerator name="UniteClip" value="3"/>
+        </enum>
+        <enum name="ItemSelectionMode">
+            <enumerator name="ContainsItemShape" value="0"/>
+            <enumerator name="IntersectsItemShape" value="1"/>
+            <enumerator name="ContainsItemBoundingRect" value="2"/>
+            <enumerator name="IntersectsItemBoundingRect" value="3"/>
+        </enum>
+        <enum name="TransformationMode">
+            <enumerator name="FastTransformation" value="0"/>
+            <enumerator name="SmoothTransformation" value="1"/>
+        </enum>
+        <enum name="Axis">
+            <enumerator name="XAxis" value="0"/>
+            <enumerator name="YAxis" value="1"/>
+            <enumerator name="ZAxis" value="2"/>
+        </enum>
+        <enum name="ContextMenuPolicy">
+            <enumerator name="NoContextMenu" value="0"/>
+            <enumerator name="DefaultContextMenu" value="1"/>
+            <enumerator name="ActionsContextMenu" value="2"/>
+            <enumerator name="CustomContextMenu" value="3"/>
+            <enumerator name="PreventContextMenu" value="4"/>
+        </enum>
+        <enum name="InputMethodHint">
+            <enumerator name="ImhNone" value="0"/>
+            <enumerator name="ImhHiddenText" value="1"/>
+            <enumerator name="ImhNoAutoUppercase" value="2"/>
+            <enumerator name="ImhPreferNumbers" value="4"/>
+            <enumerator name="ImhPreferUppercase" value="8"/>
+            <enumerator name="ImhPreferLowercase" value="16"/>
+            <enumerator name="ImhNoPredictiveText" value="32"/>
+            <enumerator name="ImhDigitsOnly" value="65536"/>
+            <enumerator name="ImhFormattedNumbersOnly" value="131072"/>
+            <enumerator name="ImhUppercaseOnly" value="262144"/>
+            <enumerator name="ImhLowercaseOnly" value="524288"/>
+            <enumerator name="ImhDialableCharactersOnly" value="1048576"/>
+            <enumerator name="ImhEmailCharactersOnly" value="2097152"/>
+            <enumerator name="ImhUrlCharactersOnly" value="4194304"/>
+            <enumerator name="ImhExclusiveInputMask" value="-65536"/>
+        </enum>
+        <enum name="InputMethodHints">
+            <enumerator name="ImhNone" value="0"/>
+            <enumerator name="ImhHiddenText" value="1"/>
+            <enumerator name="ImhNoAutoUppercase" value="2"/>
+            <enumerator name="ImhPreferNumbers" value="4"/>
+            <enumerator name="ImhPreferUppercase" value="8"/>
+            <enumerator name="ImhPreferLowercase" value="16"/>
+            <enumerator name="ImhNoPredictiveText" value="32"/>
+            <enumerator name="ImhDigitsOnly" value="65536"/>
+            <enumerator name="ImhFormattedNumbersOnly" value="131072"/>
+            <enumerator name="ImhUppercaseOnly" value="262144"/>
+            <enumerator name="ImhLowercaseOnly" value="524288"/>
+            <enumerator name="ImhDialableCharactersOnly" value="1048576"/>
+            <enumerator name="ImhEmailCharactersOnly" value="2097152"/>
+            <enumerator name="ImhUrlCharactersOnly" value="4194304"/>
+            <enumerator name="ImhExclusiveInputMask" value="-65536"/>
+        </enum>
+        <enum name="ToolButtonStyle">
+            <enumerator name="ToolButtonIconOnly" value="0"/>
+            <enumerator name="ToolButtonTextOnly" value="1"/>
+            <enumerator name="ToolButtonTextBesideIcon" value="2"/>
+            <enumerator name="ToolButtonTextUnderIcon" value="3"/>
+            <enumerator name="ToolButtonFollowStyle" value="4"/>
+        </enum>
+        <enum name="LayoutDirection">
+            <enumerator name="LeftToRight" value="0"/>
+            <enumerator name="RightToLeft" value="1"/>
+        </enum>
+        <enum name="DropAction">
+            <enumerator name="CopyAction" value="1"/>
+            <enumerator name="MoveAction" value="2"/>
+            <enumerator name="LinkAction" value="4"/>
+            <enumerator name="ActionMask" value="255"/>
+            <enumerator name="TargetMoveAction" value="32770"/>
+            <enumerator name="IgnoreAction" value="0"/>
+        </enum>
+        <enum name="DropActions">
+            <enumerator name="CopyAction" value="1"/>
+            <enumerator name="MoveAction" value="2"/>
+            <enumerator name="LinkAction" value="4"/>
+            <enumerator name="ActionMask" value="255"/>
+            <enumerator name="TargetMoveAction" value="32770"/>
+            <enumerator name="IgnoreAction" value="0"/>
+        </enum>
+        <enum name="CheckState">
+            <enumerator name="Unchecked" value="0"/>
+            <enumerator name="PartiallyChecked" value="1"/>
+            <enumerator name="Checked" value="2"/>
+        </enum>
+        <enum name="ItemFlags">
+            <enumerator name="NoItemFlags" value="0"/>
+            <enumerator name="ItemIsSelectable" value="1"/>
+            <enumerator name="ItemIsEditable" value="2"/>
+            <enumerator name="ItemIsDragEnabled" value="4"/>
+            <enumerator name="ItemIsDropEnabled" value="8"/>
+            <enumerator name="ItemIsUserCheckable" value="16"/>
+            <enumerator name="ItemIsEnabled" value="32"/>
+            <enumerator name="ItemIsTristate" value="64"/>
+        </enum>
+        <enum name="MatchFlags">
+            <enumerator name="MatchExactly" value="0"/>
+            <enumerator name="MatchContains" value="1"/>
+            <enumerator name="MatchStartsWith" value="2"/>
+            <enumerator name="MatchEndsWith" value="3"/>
+            <enumerator name="MatchRegExp" value="4"/>
+            <enumerator name="MatchWildcard" value="5"/>
+            <enumerator name="MatchFixedString" value="8"/>
+            <enumerator name="MatchCaseSensitive" value="16"/>
+            <enumerator name="MatchWrap" value="32"/>
+            <enumerator name="MatchRecursive" value="64"/>
+        </enum>
+        <enum name="WindowModality">
+            <enumerator name="NonModal" value="0"/>
+            <enumerator name="WindowModal" value="1"/>
+            <enumerator name="ApplicationModal" value="2"/>
+        </enum>
+        <enum name="TextInteractionFlag">
+            <enumerator name="NoTextInteraction" value="0"/>
+            <enumerator name="TextSelectableByMouse" value="1"/>
+            <enumerator name="TextSelectableByKeyboard" value="2"/>
+            <enumerator name="LinksAccessibleByMouse" value="4"/>
+            <enumerator name="LinksAccessibleByKeyboard" value="8"/>
+            <enumerator name="TextEditable" value="16"/>
+            <enumerator name="TextEditorInteraction" value="19"/>
+            <enumerator name="TextBrowserInteraction" value="13"/>
+        </enum>
+        <enum name="TextInteractionFlags">
+            <enumerator name="NoTextInteraction" value="0"/>
+            <enumerator name="TextSelectableByMouse" value="1"/>
+            <enumerator name="TextSelectableByKeyboard" value="2"/>
+            <enumerator name="LinksAccessibleByMouse" value="4"/>
+            <enumerator name="LinksAccessibleByKeyboard" value="8"/>
+            <enumerator name="TextEditable" value="16"/>
+            <enumerator name="TextEditorInteraction" value="19"/>
+            <enumerator name="TextBrowserInteraction" value="13"/>
+        </enum>
+        <enum name="SizeHint">
+            <enumerator name="MinimumSize" value="0"/>
+            <enumerator name="PreferredSize" value="1"/>
+            <enumerator name="MaximumSize" value="2"/>
+            <enumerator name="MinimumDescent" value="3"/>
+            <enumerator name="NSizeHints" value="4"/>
+        </enum>
+    </type>
+    <type name="Qt.PathQuad" version="4.6" extends="QDeclarativeCurve">
+        <property name="controlX" type="qreal"/>
+        <property name="controlY" type="qreal"/>
+    </type>
+    <type name="Qt.ParticleMotionGravity" version="4.6" extends="Qt.ParticleMotion">
+        <property name="xattractor" type="qreal"/>
+        <property name="yattractor" type="qreal"/>
+        <property name="acceleration" type="qreal"/>
+        <signal name="xattractorChanged"/>
+        <signal name="yattractorChanged"/>
+        <signal name="accelerationChanged"/>
+    </type>
+    <type name="Qt.Column" version="4.6" extends="QDeclarativeBasePositioner"/>
+    <type name="QDeclarativePathElement" extends="Qt.QtObject">
+        <signal name="changed"/>
+    </type>
+    <type name="Qt.AnchorChanges" version="4.6" extends="QDeclarativeStateOperation">
+        <property name="target" type="Qt.Item"/>
+        <property name="reset" type="string"/>
+        <property name="left" type="QDeclarativeAnchorLine"/>
+        <property name="right" type="QDeclarativeAnchorLine"/>
+        <property name="horizontalCenter" type="QDeclarativeAnchorLine"/>
+        <property name="top" type="QDeclarativeAnchorLine"/>
+        <property name="bottom" type="QDeclarativeAnchorLine"/>
+        <property name="verticalCenter" type="QDeclarativeAnchorLine"/>
+        <property name="baseline" type="QDeclarativeAnchorLine"/>
+    </type>
+    <type name="Qt.Component" version="4.6" extends="Qt.QtObject">
+        <enum name="Status">
+            <enumerator name="Null" value="0"/>
+            <enumerator name="Ready" value="1"/>
+            <enumerator name="Loading" value="2"/>
+            <enumerator name="Error" value="3"/>
+        </enum>
+        <property name="isNull" type="bool"/>
+        <property name="isReady" type="bool"/>
+        <property name="isError" type="bool"/>
+        <property name="isLoading" type="bool"/>
+        <property name="progress" type="qreal"/>
+        <property name="status" type="Status"/>
+        <property name="url" type="QUrl"/>
+        <signal name="statusChanged">
+            <param type="QDeclarativeComponent.Status"/>
+        </signal>
+        <signal name="progressChanged">
+            <param type="qreal"/>
+        </signal>
+        <method name="errorsString" type="string"/>
+        <method name="createObject" type="QScriptValue"/>
+    </type>
+    <type name="QAction" extends="Qt.QtObject">
+        <enum name="MenuRole">
+            <enumerator name="NoRole" value="0"/>
+            <enumerator name="TextHeuristicRole" value="1"/>
+            <enumerator name="ApplicationSpecificRole" value="2"/>
+            <enumerator name="AboutQtRole" value="3"/>
+            <enumerator name="AboutRole" value="4"/>
+            <enumerator name="PreferencesRole" value="5"/>
+            <enumerator name="QuitRole" value="6"/>
+        </enum>
+        <enum name="SoftKeyRole">
+            <enumerator name="NoSoftKey" value="0"/>
+            <enumerator name="PositiveSoftKey" value="1"/>
+            <enumerator name="NegativeSoftKey" value="2"/>
+            <enumerator name="SelectSoftKey" value="3"/>
+        </enum>
+        <enum name="Priority">
+            <enumerator name="LowPriority" value="0"/>
+            <enumerator name="NormalPriority" value="128"/>
+            <enumerator name="HighPriority" value="256"/>
+        </enum>
+        <property name="checkable" type="bool"/>
+        <property name="checked" type="bool"/>
+        <property name="enabled" type="bool"/>
+        <property name="icon" type="QIcon"/>
+        <property name="text" type="string"/>
+        <property name="iconText" type="string"/>
+        <property name="toolTip" type="string"/>
+        <property name="statusTip" type="string"/>
+        <property name="whatsThis" type="string"/>
+        <property name="font" type="QFont"/>
+        <property name="shortcut" type="QKeySequence"/>
+        <property name="shortcutContext" type="Qt.ShortcutContext"/>
+        <property name="autoRepeat" type="bool"/>
+        <property name="visible" type="bool"/>
+        <property name="menuRole" type="MenuRole"/>
+        <property name="softKeyRole" type="SoftKeyRole"/>
+        <property name="iconVisibleInMenu" type="bool"/>
+        <property name="priority" type="Priority"/>
+        <signal name="changed"/>
+        <signal name="triggered">
+            <param name="checked" type="bool"/>
+        </signal>
+        <signal name="triggered"/>
+        <signal name="hovered"/>
+        <signal name="toggled">
+            <param type="bool"/>
+        </signal>
+        <method name="trigger"/>
+        <method name="hover"/>
+        <method name="setChecked">
+            <param type="bool"/>
+        </method>
+        <method name="toggle"/>
+        <method name="setEnabled">
+            <param type="bool"/>
+        </method>
+        <method name="setDisabled">
+            <param name="b" type="bool"/>
+        </method>
+        <method name="setVisible">
+            <param type="bool"/>
+        </method>
+    </type>
+    <type name="Qt.QtObject" version="4.6">
+        <property name="objectName" type="string"/>
+        <signal name="destroyed">
+            <param type="Qt.QtObject"/>
+        </signal>
+        <signal name="destroyed"/>
+        <method name="deleteLater"/>
+    </type>
+    <type name="Qt.WorkerListModel" version="4.6" extends="QListModelInterface">
+        <property name="count" type="int"/>
+        <signal name="countChanged"/>
+        <method name="clear"/>
+        <method name="remove">
+            <param name="index" type="int"/>
+        </method>
+        <method name="append">
+            <param type="QScriptValue"/>
+        </method>
+        <method name="insert">
+            <param name="index" type="int"/>
+            <param type="QScriptValue"/>
+        </method>
+        <method name="get" type="QScriptValue">
+            <param name="index" type="int"/>
+        </method>
+        <method name="set">
+            <param name="index" type="int"/>
+            <param type="QScriptValue"/>
+        </method>
+    </type>
+    <type name="QGraphicsObject" extends="Qt.QtObject">
+        <property name="parent" type="QGraphicsObject"/>
+        <property name="opacity" type="qreal"/>
+        <property name="enabled" type="bool"/>
+        <property name="visible" type="bool"/>
+        <property name="pos" type="QPointF"/>
+        <property name="x" type="qreal"/>
+        <property name="y" type="qreal"/>
+        <property name="z" type="qreal"/>
+        <property name="rotation" type="qreal"/>
+        <property name="scale" type="qreal"/>
+        <property name="transformOriginPoint" type="QPointF"/>
+        <signal name="parentChanged"/>
+        <signal name="opacityChanged"/>
+        <signal name="visibleChanged"/>
+        <signal name="enabledChanged"/>
+        <signal name="xChanged"/>
+        <signal name="yChanged"/>
+        <signal name="zChanged"/>
+        <signal name="rotationChanged"/>
+        <signal name="scaleChanged"/>
+    </type>
+    <type name="Qt.Gradient" version="4.6" extends="Qt.QtObject">
+        <property name="stops" type="Qt.GradientStop" isList="true"/>
+        <signal name="updated"/>
+    </type>
+    <type name="Qt.VisualDataModel" version="4.6" extends="QDeclarativeVisualModel">
+        <property name="model" type="QVariant"/>
+        <property name="delegate" type="Qt.Component"/>
+        <property name="part" type="string"/>
+        <property name="parts" type="Qt.QtObject"/>
+        <property name="rootIndex" type="QModelIndex"/>
+        <signal name="createdPackage">
+            <param name="index" type="int"/>
+            <param name="package" type="Qt.Package"/>
+        </signal>
+        <signal name="destroyingPackage">
+            <param name="package" type="Qt.Package"/>
+        </signal>
+        <signal name="rootIndexChanged"/>
+    </type>
+    <type name="Qt.Keys" version="4.6" extends="Qt.QtObject">
+        <property name="enabled" type="bool"/>
+        <property name="forwardTo" type="Qt.Item" isList="true"/>
+        <signal name="enabledChanged"/>
+        <signal name="pressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="released">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="digit0Pressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="digit1Pressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="digit2Pressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="digit3Pressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="digit4Pressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="digit5Pressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="digit6Pressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="digit7Pressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="digit8Pressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="digit9Pressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="leftPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="rightPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="upPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="downPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="asteriskPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="numberSignPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="escapePressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="returnPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="enterPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="deletePressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="spacePressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="backPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="cancelPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="selectPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="yesPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="noPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="context1Pressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="context2Pressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="context3Pressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="context4Pressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="callPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="hangupPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="flipPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="menuPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="volumeUpPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+        <signal name="volumeDownPressed">
+            <param name="event" type="QDeclarativeKeyEvent"/>
+        </signal>
+    </type>
+    <type name="QGraphicsTransform" extends="Qt.QtObject"/>
+    <type name="Qt.Transition" version="4.6" extends="Qt.QtObject">
+        <property name="from" type="string"/>
+        <property name="to" type="string"/>
+        <property name="reversible" type="bool"/>
+        <property name="animations" type="QDeclarativeAbstractAnimation" isList="true"/>
+    </type>
+    <type name="Qt.QDoubleValidator" version="4.7" extends="QValidator">
+        <enum name="Notation">
+            <enumerator name="StandardNotation" value="0"/>
+            <enumerator name="ScientificNotation" value="1"/>
+        </enum>
+        <property name="bottom" type="double"/>
+        <property name="top" type="double"/>
+        <property name="decimals" type="int"/>
+        <property name="notation" type="Notation"/>
+    </type>
+    <type name="QDeclarativeWebSettings" extends="Qt.QtObject">
+        <property name="standardFontFamily" type="string"/>
+        <property name="fixedFontFamily" type="string"/>
+        <property name="serifFontFamily" type="string"/>
+        <property name="sansSerifFontFamily" type="string"/>
+        <property name="cursiveFontFamily" type="string"/>
+        <property name="fantasyFontFamily" type="string"/>
+        <property name="minimumFontSize" type="int"/>
+        <property name="minimumLogicalFontSize" type="int"/>
+        <property name="defaultFontSize" type="int"/>
+        <property name="defaultFixedFontSize" type="int"/>
+        <property name="autoLoadImages" type="bool"/>
+        <property name="javascriptEnabled" type="bool"/>
+        <property name="javaEnabled" type="bool"/>
+        <property name="pluginsEnabled" type="bool"/>
+        <property name="privateBrowsingEnabled" type="bool"/>
+        <property name="javascriptCanOpenWindows" type="bool"/>
+        <property name="javascriptCanAccessClipboard" type="bool"/>
+        <property name="developerExtrasEnabled" type="bool"/>
+        <property name="linksIncludedInFocusChain" type="bool"/>
+        <property name="zoomTextOnly" type="bool"/>
+        <property name="printElementBackgrounds" type="bool"/>
+        <property name="offlineStorageDatabaseEnabled" type="bool"/>
+        <property name="offlineWebApplicationCacheEnabled" type="bool"/>
+        <property name="localStorageDatabaseEnabled" type="bool"/>
+        <property name="localContentCanAccessRemoteUrls" type="bool"/>
+    </type>
+    <type name="Qt.GridView" version="4.6" extends="Qt.Flickable">
+        <enum name="Flow">
+            <enumerator name="LeftToRight" value="0"/>
+            <enumerator name="TopToBottom" value="1"/>
+        </enum>
+        <property name="model" type="QVariant"/>
+        <property name="delegate" type="Qt.Component"/>
+        <property name="currentIndex" type="int"/>
+        <property name="currentItem" type="Qt.Item"/>
+        <property name="count" type="int"/>
+        <property name="highlight" type="Qt.Component"/>
+        <property name="highlightItem" type="Qt.Item"/>
+        <property name="highlightFollowsCurrentItem" type="bool"/>
+        <property name="flow" type="Flow"/>
+        <property name="keyNavigationWraps" type="bool"/>
+        <property name="cacheBuffer" type="int"/>
+        <property name="cellWidth" type="int"/>
+        <property name="cellHeight" type="int"/>
+        <signal name="countChanged"/>
+        <signal name="currentIndexChanged"/>
+        <signal name="cellWidthChanged"/>
+        <signal name="cellHeightChanged"/>
+        <signal name="highlightChanged"/>
+        <method name="moveCurrentIndexUp"/>
+        <method name="moveCurrentIndexDown"/>
+        <method name="moveCurrentIndexLeft"/>
+        <method name="moveCurrentIndexRight"/>
+        <method name="positionViewAtIndex">
+            <param name="index" type="int"/>
+        </method>
+    </type>
+    <type name="Qt.DropShadow" version="4.6" extends="QGraphicsEffect">
+        <property name="offset" type="QPointF"/>
+        <property name="xOffset" type="qreal"/>
+        <property name="yOffset" type="qreal"/>
+        <property name="blurRadius" type="qreal"/>
+        <property name="color" type="QColor"/>
+        <signal name="offsetChanged">
+            <param name="offset" type="QPointF"/>
+        </signal>
+        <signal name="blurRadiusChanged">
+            <param name="blurRadius" type="qreal"/>
+        </signal>
+        <signal name="colorChanged">
+            <param name="color" type="QColor"/>
+        </signal>
+        <method name="setOffset">
+            <param name="ofs" type="QPointF"/>
+        </method>
+        <method name="setOffset">
+            <param name="dx" type="qreal"/>
+            <param name="dy" type="qreal"/>
+        </method>
+        <method name="setOffset">
+            <param name="d" type="qreal"/>
+        </method>
+        <method name="setXOffset">
+            <param name="dx" type="qreal"/>
+        </method>
+        <method name="setYOffset">
+            <param name="dy" type="qreal"/>
+        </method>
+        <method name="setBlurRadius">
+            <param name="blurRadius" type="qreal"/>
+        </method>
+        <method name="setColor">
+            <param name="color" type="QColor"/>
+        </method>
+    </type>
+    <type name="Qt.SystemPalette" version="4.6" extends="Qt.QtObject">
+        <enum name="ColorGroup">
+            <enumerator name="Active" value="0"/>
+            <enumerator name="Inactive" value="2"/>
+            <enumerator name="Disabled" value="1"/>
+        </enum>
+        <property name="colorGroup" type="QDeclarativeSystemPalette.ColorGroup"/>
+        <property name="window" type="QColor"/>
+        <property name="windowText" type="QColor"/>
+        <property name="base" type="QColor"/>
+        <property name="text" type="QColor"/>
+        <property name="alternateBase" type="QColor"/>
+        <property name="button" type="QColor"/>
+        <property name="buttonText" type="QColor"/>
+        <property name="light" type="QColor"/>
+        <property name="midlight" type="QColor"/>
+        <property name="dark" type="QColor"/>
+        <property name="mid" type="QColor"/>
+        <property name="shadow" type="QColor"/>
+        <property name="highlight" type="QColor"/>
+        <property name="highlightedText" type="QColor"/>
+        <signal name="paletteChanged"/>
+    </type>
+    <type name="Qt.Flickable" version="4.6" extends="Qt.Item">
+        <enum name="FlickDirection">
+            <enumerator name="AutoFlickDirection" value="0"/>
+            <enumerator name="HorizontalFlick" value="1"/>
+            <enumerator name="VerticalFlick" value="2"/>
+            <enumerator name="HorizontalAndVerticalFlick" value="3"/>
+        </enum>
+        <property name="viewportWidth" type="qreal"/>
+        <property name="viewportHeight" type="qreal"/>
+        <property name="viewportX" type="qreal"/>
+        <property name="viewportY" type="qreal"/>
+        <property name="horizontalVelocity" type="qreal"/>
+        <property name="verticalVelocity" type="qreal"/>
+        <property name="reportedVelocitySmoothing" type="qreal"/>
+        <property name="overShoot" type="bool"/>
+        <property name="maximumFlickVelocity" type="qreal"/>
+        <property name="flickDeceleration" type="qreal"/>
+        <property name="moving" type="bool"/>
+        <property name="flicking" type="bool"/>
+        <property name="flickDirection" type="FlickDirection"/>
+        <property name="interactive" type="bool"/>
+        <property name="pressDelay" type="int"/>
+        <property name="atXEnd" type="bool"/>
+        <property name="atYEnd" type="bool"/>
+        <property name="atXBeginning" type="bool"/>
+        <property name="atYBeginning" type="bool"/>
+        <property name="visibleArea" type="Qt.VisibleArea"/>
+        <property name="flickableData" type="Qt.QtObject" isList="true"/>
+        <property name="flickableChildren" type="Qt.Item" isList="true"/>
+        <signal name="viewportWidthChanged"/>
+        <signal name="viewportHeightChanged"/>
+        <signal name="positionXChanged"/>
+        <signal name="positionYChanged"/>
+        <signal name="movingChanged"/>
+        <signal name="flickingChanged"/>
+        <signal name="movementStarted"/>
+        <signal name="movementEnded"/>
+        <signal name="flickStarted"/>
+        <signal name="flickEnded"/>
+        <signal name="reportedVelocitySmoothingChanged">
+            <param type="int"/>
+        </signal>
+        <signal name="horizontalVelocityChanged"/>
+        <signal name="verticalVelocityChanged"/>
+        <signal name="isAtBoundaryChanged"/>
+        <signal name="pageChanged"/>
+        <signal name="flickDirectionChanged"/>
+        <signal name="interactiveChanged"/>
+        <signal name="overShootChanged"/>
+        <signal name="maximumFlickVelocityChanged"/>
+        <signal name="flickDecelerationChanged"/>
+        <signal name="pressDelayChanged"/>
+    </type>
+    <type name="Qt.SequentialAnimation" version="4.6" extends="QDeclarativeAnimationGroup"/>
+    <type name="Qt.Drag" version="4.6" extends="Qt.QtObject">
+        <enum name="Axis">
+            <enumerator name="XAxis" value="1"/>
+            <enumerator name="YAxis" value="2"/>
+            <enumerator name="XandYAxis" value="3"/>
+        </enum>
+        <property name="target" type="Qt.Item"/>
+        <property name="axis" type="Axis"/>
+        <property name="minimumX" type="qreal"/>
+        <property name="maximumX" type="qreal"/>
+        <property name="minimumY" type="qreal"/>
+        <property name="maximumY" type="qreal"/>
+        <signal name="targetChanged"/>
+        <signal name="axisChanged"/>
+        <signal name="minimumXChanged"/>
+        <signal name="maximumXChanged"/>
+        <signal name="minimumYChanged"/>
+        <signal name="maximumYChanged"/>
+    </type>
+    <type name="Qt.ListView" version="4.6" extends="Qt.Flickable">
+        <enum name="HighlightRangeMode">
+            <enumerator name="NoHighlightRange" value="0"/>
+            <enumerator name="ApplyRange" value="1"/>
+            <enumerator name="StrictlyEnforceRange" value="2"/>
+        </enum>
+        <enum name="Orientation">
+            <enumerator name="Horizontal" value="1"/>
+            <enumerator name="Vertical" value="2"/>
+        </enum>
+        <enum name="SnapMode">
+            <enumerator name="NoSnap" value="0"/>
+            <enumerator name="SnapToItem" value="1"/>
+            <enumerator name="SnapOneItem" value="2"/>
+        </enum>
+        <property name="model" type="QVariant"/>
+        <property name="delegate" type="Qt.Component"/>
+        <property name="currentIndex" type="int"/>
+        <property name="currentItem" type="Qt.Item"/>
+        <property name="count" type="int"/>
+        <property name="highlight" type="Qt.Component"/>
+        <property name="highlightItem" type="Qt.Item"/>
+        <property name="highlightFollowsCurrentItem" type="bool"/>
+        <property name="highlightMoveSpeed" type="qreal"/>
+        <property name="highlightResizeSpeed" type="qreal"/>
+        <property name="preferredHighlightBegin" type="qreal"/>
+        <property name="preferredHighlightEnd" type="qreal"/>
+        <property name="highlightRangeMode" type="HighlightRangeMode"/>
+        <property name="spacing" type="qreal"/>
+        <property name="orientation" type="Orientation"/>
+        <property name="keyNavigationWraps" type="bool"/>
+        <property name="cacheBuffer" type="int"/>
+        <property name="section" type="Qt.ViewSection"/>
+        <property name="currentSection" type="string"/>
+        <property name="snapMode" type="SnapMode"/>
+        <property name="header" type="Qt.Component"/>
+        <property name="footer" type="Qt.Component"/>
+        <signal name="countChanged"/>
+        <signal name="spacingChanged"/>
+        <signal name="orientationChanged"/>
+        <signal name="currentIndexChanged"/>
+        <signal name="currentSectionChanged"/>
+        <signal name="highlightMoveSpeedChanged"/>
+        <signal name="highlightResizeSpeedChanged"/>
+        <signal name="highlightChanged"/>
+        <method name="incrementCurrentIndex"/>
+        <method name="decrementCurrentIndex"/>
+        <method name="positionViewAtIndex">
+            <param name="index" type="int"/>
+        </method>
+    </type>
+    <type name="Qt.NumberAnimation" version="4.6" extends="Qt.PropertyAnimation">
+        <property name="from" type="qreal"/>
+        <property name="to" type="qreal"/>
+    </type>
+    <type name="Qt.Image" version="4.6" extends="QDeclarativeImageBase">
+        <enum name="FillMode">
+            <enumerator name="Stretch" value="0"/>
+            <enumerator name="PreserveAspectFit" value="1"/>
+            <enumerator name="PreserveAspectCrop" value="2"/>
+            <enumerator name="Tile" value="3"/>
+            <enumerator name="TileVertically" value="4"/>
+            <enumerator name="TileHorizontally" value="5"/>
+        </enum>
+        <property name="pixmap" type="QPixmap"/>
+        <property name="fillMode" type="FillMode"/>
+        <property name="paintedWidth" type="qreal"/>
+        <property name="paintedHeight" type="qreal"/>
+        <signal name="fillModeChanged"/>
+        <signal name="paintedGeometryChanged"/>
+    </type>
+    <type name="Qt.PropertyAction" version="4.6" extends="QDeclarativeAbstractAnimation">
+        <property name="target" type="Qt.QtObject"/>
+        <property name="property" type="string"/>
+        <property name="properties" type="string"/>
+        <property name="targets" type="Qt.QtObject" isList="true"/>
+        <property name="exclude" type="Qt.QtObject" isList="true"/>
+        <property name="value" type="QVariant"/>
+        <signal name="valueChanged">
+            <param type="QVariant"/>
+        </signal>
+        <signal name="propertiesChanged">
+            <param type="string"/>
+        </signal>
+        <signal name="targetChanged">
+            <param type="Qt.QtObject"/>
+            <param type="string"/>
+        </signal>
+    </type>
+    <type name="Qt.LayoutItem" version="4.6" extends="Qt.Item">
+        <property name="maximumSize" type="QSizeF"/>
+        <property name="minimumSize" type="QSizeF"/>
+        <property name="preferredSize" type="QSizeF"/>
+        <signal name="maximumSizeChanged"/>
+        <signal name="minimumSizeChanged"/>
+        <signal name="preferredSizeChanged"/>
+    </type>
+    <type name="Qt.ParticleMotionWander" version="4.6" extends="Qt.ParticleMotion">
+        <property name="xvariance" type="qreal"/>
+        <property name="yvariance" type="qreal"/>
+        <property name="pace" type="qreal"/>
+        <signal name="xvarianceChanged"/>
+        <signal name="yvarianceChanged"/>
+        <signal name="paceChanged"/>
+    </type>
+    <type name="Qt.Row" version="4.6" extends="QDeclarativeBasePositioner"/>
+    <type name="Qt.PathCubic" version="4.6" extends="QDeclarativeCurve">
+        <property name="control1X" type="qreal"/>
+        <property name="control1Y" type="qreal"/>
+        <property name="control2X" type="qreal"/>
+        <property name="control2Y" type="qreal"/>
+    </type>
+    <type name="Qt.TextInput" version="4.6" extends="QDeclarativePaintedItem">
+        <enum name="EchoMode">
+            <enumerator name="Normal" value="0"/>
+            <enumerator name="NoEcho" value="1"/>
+            <enumerator name="Password" value="2"/>
+            <enumerator name="PasswordEchoOnEdit" value="3"/>
+        </enum>
+        <enum name="HAlignment">
+            <enumerator name="AlignLeft" value="1"/>
+            <enumerator name="AlignRight" value="2"/>
+            <enumerator name="AlignHCenter" value="4"/>
+        </enum>
+        <property name="text" type="string"/>
+        <property name="color" type="QColor"/>
+        <property name="selectionColor" type="QColor"/>
+        <property name="selectedTextColor" type="QColor"/>
+        <property name="font" type="QFont"/>
+        <property name="horizontalAlignment" type="HAlignment"/>
+        <property name="readOnly" type="bool"/>
+        <property name="cursorVisible" type="bool"/>
+        <property name="cursorPosition" type="int"/>
+        <property name="cursorRect" type="QRect"/>
+        <property name="cursorDelegate" type="Qt.Component"/>
+        <property name="selectionStart" type="int"/>
+        <property name="selectionEnd" type="int"/>
+        <property name="selectedText" type="string"/>
+        <property name="maximumLength" type="int"/>
+        <property name="validator" type="QValidator"/>
+        <property name="inputMask" type="string"/>
+        <property name="inputMethodHints" type="Qt.InputMethodHints"/>
+        <property name="acceptableInput" type="bool"/>
+        <property name="echoMode" type="EchoMode"/>
+        <property name="focusOnPress" type="bool"/>
+        <signal name="textChanged"/>
+        <signal name="cursorPositionChanged"/>
+        <signal name="selectionStartChanged"/>
+        <signal name="selectionEndChanged"/>
+        <signal name="selectedTextChanged"/>
+        <signal name="accepted"/>
+        <signal name="acceptableInputChanged"/>
+        <signal name="colorChanged">
+            <param name="color" type="QColor"/>
+        </signal>
+        <signal name="selectionColorChanged">
+            <param name="color" type="QColor"/>
+        </signal>
+        <signal name="selectedTextColorChanged">
+            <param name="color" type="QColor"/>
+        </signal>
+        <signal name="fontChanged">
+            <param name="font" type="QFont"/>
+        </signal>
+        <signal name="horizontalAlignmentChanged">
+            <param name="alignment" type="HAlignment"/>
+        </signal>
+        <signal name="readOnlyChanged">
+            <param name="isReadOnly" type="bool"/>
+        </signal>
+        <signal name="cursorVisibleChanged">
+            <param name="isCursorVisible" type="bool"/>
+        </signal>
+        <signal name="cursorDelegateChanged"/>
+        <signal name="maximumLengthChanged">
+            <param name="maximumLength" type="int"/>
+        </signal>
+        <signal name="validatorChanged"/>
+        <signal name="inputMaskChanged">
+            <param name="inputMask" type="string"/>
+        </signal>
+        <signal name="echoModeChanged">
+            <param name="echoMode" type="EchoMode"/>
+        </signal>
+        <signal name="focusOnPressChanged">
+            <param name="focusOnPress" type="bool"/>
+        </signal>
+        <method name="selectAll"/>
+        <method name="xToPos" type="int">
+            <param name="x" type="int"/>
+        </method>
+    </type>
+    <type name="Qt.Flipable" version="4.6" extends="Qt.Item">
+        <enum name="Side">
+            <enumerator name="Front" value="0"/>
+            <enumerator name="Back" value="1"/>
+        </enum>
+        <property name="front" type="Qt.Item"/>
+        <property name="back" type="Qt.Item"/>
+        <property name="side" type="Side"/>
+        <signal name="sideChanged"/>
+    </type>
+    <type name="Qt.PathAttribute" version="4.6" extends="QDeclarativePathElement">
+        <property name="name" type="string"/>
+        <property name="value" type="qreal"/>
+    </type>
+    <type name="QDeclarativeVisualDataModelParts" extends="Qt.QtObject"/>
+    <type name="Qt.NumberFormatter" version="4.6" extends="Qt.QtObject">
+        <property name="text" type="string"/>
+        <property name="format" type="string"/>
+        <property name="number" type="qreal"/>
+        <signal name="textChanged"/>
+    </type>
+    <type name="Qt.XmlListModel" version="4.6" extends="QListModelInterface">
+        <enum name="Status">
+            <enumerator name="Null" value="0"/>
+            <enumerator name="Ready" value="1"/>
+            <enumerator name="Loading" value="2"/>
+            <enumerator name="Error" value="3"/>
+        </enum>
+        <property name="status" type="Status"/>
+        <property name="progress" type="qreal"/>
+        <property name="source" type="QUrl"/>
+        <property name="xml" type="string"/>
+        <property name="query" type="string"/>
+        <property name="namespaceDeclarations" type="string"/>
+        <property name="roles" type="Qt.XmlRole" isList="true"/>
+        <property name="count" type="int"/>
+        <signal name="statusChanged">
+            <param type="Status"/>
+        </signal>
+        <signal name="progressChanged">
+            <param name="progress" type="qreal"/>
+        </signal>
+        <signal name="countChanged"/>
+        <method name="reload"/>
+    </type>
+    <type name="Qt.Rectangle" version="4.6" extends="Qt.Item">
+        <property name="color" type="QColor"/>
+        <property name="gradient" type="Qt.Gradient"/>
+        <property name="border" type="Qt.Pen"/>
+        <property name="radius" type="qreal"/>
+        <signal name="colorChanged"/>
+        <signal name="radiusChanged"/>
+    </type>
+    <type name="Qt.WebView" version="4.6" extends="QDeclarativePaintedItem">
+        <enum name="Status">
+            <enumerator name="Null" value="0"/>
+            <enumerator name="Ready" value="1"/>
+            <enumerator name="Loading" value="2"/>
+            <enumerator name="Error" value="3"/>
+        </enum>
+        <property name="title" type="string"/>
+        <property name="icon" type="QPixmap"/>
+        <property name="zoomFactor" type="qreal"/>
+        <property name="statusText" type="string"/>
+        <property name="html" type="string"/>
+        <property name="pressGrabTime" type="int"/>
+        <property name="preferredWidth" type="int"/>
+        <property name="preferredHeight" type="int"/>
+        <property name="url" type="QUrl"/>
+        <property name="progress" type="qreal"/>
+        <property name="status" type="Status"/>
+        <property name="reload" type="QAction"/>
+        <property name="back" type="QAction"/>
+        <property name="forward" type="QAction"/>
+        <property name="stop" type="QAction"/>
+        <property name="settings" type="QDeclarativeWebSettings"/>
+        <property name="javaScriptWindowObjects" type="Qt.QtObject" isList="true"/>
+        <property name="newWindowComponent" type="Qt.Component"/>
+        <property name="newWindowParent" type="Qt.Item"/>
+        <property name="renderingEnabled" type="bool"/>
+        <signal name="preferredWidthChanged"/>
+        <signal name="preferredHeightChanged"/>
+        <signal name="urlChanged"/>
+        <signal name="progressChanged"/>
+        <signal name="statusChanged">
+            <param type="Status"/>
+        </signal>
+        <signal name="titleChanged">
+            <param type="string"/>
+        </signal>
+        <signal name="iconChanged"/>
+        <signal name="statusTextChanged"/>
+        <signal name="htmlChanged"/>
+        <signal name="pressGrabTimeChanged"/>
+        <signal name="zoomFactorChanged"/>
+        <signal name="newWindowComponentChanged"/>
+        <signal name="newWindowParentChanged"/>
+        <signal name="renderingEnabledChanged"/>
+        <signal name="loadStarted"/>
+        <signal name="loadFinished"/>
+        <signal name="loadFailed"/>
+        <signal name="doubleClick">
+            <param name="clickX" type="int"/>
+            <param name="clickY" type="int"/>
+        </signal>
+        <signal name="zoomTo">
+            <param name="zoom" type="qreal"/>
+            <param name="centerX" type="int"/>
+            <param name="centerY" type="int"/>
+        </signal>
+        <signal name="alert">
+            <param name="message" type="string"/>
+        </signal>
+        <method name="evaluateJavaScript" type="QVariant">
+            <param type="string"/>
+        </method>
+        <method name="heuristicZoom" type="bool">
+            <param name="clickX" type="int"/>
+            <param name="clickY" type="int"/>
+            <param name="maxzoom" type="qreal"/>
+        </method>
+    </type>
+    <type name="QDeclarativeImageBase" extends="Qt.Item">
+        <enum name="Status">
+            <enumerator name="Null" value="0"/>
+            <enumerator name="Ready" value="1"/>
+            <enumerator name="Loading" value="2"/>
+            <enumerator name="Error" value="3"/>
+        </enum>
+        <property name="status" type="Status"/>
+        <property name="source" type="QUrl"/>
+        <property name="progress" type="qreal"/>
+        <property name="asynchronous" type="bool"/>
+        <signal name="sourceChanged">
+            <param type="QUrl"/>
+        </signal>
+        <signal name="statusChanged">
+            <param type="Status"/>
+        </signal>
+        <signal name="progressChanged">
+            <param name="progress" type="qreal"/>
+        </signal>
+        <signal name="pixmapChanged"/>
+        <signal name="asynchronousChanged"/>
+    </type>
+    <type name="Qt.Connection" version="4.6" extends="Qt.QtObject">
+        <property name="sender" type="Qt.QtObject"/>
+        <property name="script" type="QDeclarativeScriptString"/>
+        <property name="signal" type="string"/>
+    </type>
+    <type name="Qt.Scale" version="4.6" extends="QGraphicsTransform">
+        <property name="origin" type="QVector3D"/>
+        <property name="xScale" type="qreal"/>
+        <property name="yScale" type="qreal"/>
+        <property name="zScale" type="qreal"/>
+        <signal name="originChanged"/>
+        <signal name="scaleChanged"/>
+    </type>
+    <type name="Qt.TextEdit" version="4.6" extends="QDeclarativePaintedItem">
+        <enum name="HAlignment">
+            <enumerator name="AlignLeft" value="1"/>
+            <enumerator name="AlignRight" value="2"/>
+            <enumerator name="AlignHCenter" value="4"/>
+        </enum>
+        <enum name="VAlignment">
+            <enumerator name="AlignTop" value="32"/>
+            <enumerator name="AlignBottom" value="64"/>
+            <enumerator name="AlignVCenter" value="128"/>
+        </enum>
+        <enum name="TextFormat">
+            <enumerator name="PlainText" value="0"/>
+            <enumerator name="RichText" value="1"/>
+            <enumerator name="AutoText" value="2"/>
+        </enum>
+        <property name="text" type="string"/>
+        <property name="color" type="QColor"/>
+        <property name="selectionColor" type="QColor"/>
+        <property name="selectedTextColor" type="QColor"/>
+        <property name="font" type="QFont"/>
+        <property name="horizontalAlignment" type="HAlignment"/>
+        <property name="verticalAlignment" type="VAlignment"/>
+        <property name="wrap" type="bool"/>
+        <property name="textFormat" type="TextFormat"/>
+        <property name="readOnly" type="bool"/>
+        <property name="cursorVisible" type="bool"/>
+        <property name="cursorPosition" type="int"/>
+        <property name="cursorDelegate" type="Qt.Component"/>
+        <property name="selectionStart" type="int"/>
+        <property name="selectionEnd" type="int"/>
+        <property name="selectedText" type="string"/>
+        <property name="focusOnPress" type="bool"/>
+        <property name="persistentSelection" type="bool"/>
+        <property name="textMargin" type="qreal"/>
+        <property name="inputMethodHints" type="Qt.InputMethodHints"/>
+        <signal name="textChanged">
+            <param type="string"/>
+        </signal>
+        <signal name="cursorPositionChanged"/>
+        <signal name="selectionStartChanged"/>
+        <signal name="selectionEndChanged"/>
+        <signal name="selectionChanged"/>
+        <signal name="colorChanged">
+            <param name="color" type="QColor"/>
+        </signal>
+        <signal name="selectionColorChanged">
+            <param name="color" type="QColor"/>
+        </signal>
+        <signal name="selectedTextColorChanged">
+            <param name="color" type="QColor"/>
+        </signal>
+        <signal name="fontChanged">
+            <param name="font" type="QFont"/>
+        </signal>
+        <signal name="horizontalAlignmentChanged">
+            <param name="alignment" type="HAlignment"/>
+        </signal>
+        <signal name="verticalAlignmentChanged">
+            <param name="alignment" type="VAlignment"/>
+        </signal>
+        <signal name="wrapChanged">
+            <param name="isWrapped" type="bool"/>
+        </signal>
+        <signal name="textFormatChanged">
+            <param name="textFormat" type="TextFormat"/>
+        </signal>
+        <signal name="readOnlyChanged">
+            <param name="isReadOnly" type="bool"/>
+        </signal>
+        <signal name="cursorVisibleChanged">
+            <param name="isCursorVisible" type="bool"/>
+        </signal>
+        <signal name="cursorDelegateChanged"/>
+        <signal name="focusOnPressChanged">
+            <param name="focusIsPressed" type="bool"/>
+        </signal>
+        <signal name="persistentSelectionChanged">
+            <param name="isPersistentSelection" type="bool"/>
+        </signal>
+        <signal name="textMarginChanged">
+            <param name="textMargin" type="qreal"/>
+        </signal>
+        <method name="selectAll"/>
+    </type>
+    <type name="Qt.QRegExpValidator" version="4.7" extends="QValidator">
+        <property name="regExp" type="QRegExp"/>
+    </type>
+    <type name="Qt.Opacity" version="4.6" extends="QGraphicsEffect">
+        <property name="opacity" type="qreal"/>
+        <property name="opacityMask" type="QBrush"/>
+        <signal name="opacityChanged">
+            <param name="opacity" type="qreal"/>
+        </signal>
+        <signal name="opacityMaskChanged">
+            <param name="mask" type="QBrush"/>
+        </signal>
+        <method name="setOpacity">
+            <param name="opacity" type="qreal"/>
+        </method>
+        <method name="setOpacityMask">
+            <param name="mask" type="QBrush"/>
+        </method>
+    </type>
+    <type name="QGraphicsEffect" extends="Qt.QtObject">
+        <enum name="ChangeFlags">
+            <enumerator name="SourceAttached" value="1"/>
+            <enumerator name="SourceDetached" value="2"/>
+            <enumerator name="SourceBoundingRectChanged" value="4"/>
+            <enumerator name="SourceInvalidated" value="8"/>
+        </enum>
+        <property name="enabled" type="bool"/>
+        <signal name="enabledChanged">
+            <param name="enabled" type="bool"/>
+        </signal>
+        <method name="setEnabled">
+            <param name="enable" type="bool"/>
+        </method>
+        <method name="update"/>
+    </type>
+    <type name="Qt.MouseArea" version="4.6" extends="Qt.Item">
+        <property name="mouseX" type="qreal"/>
+        <property name="mouseY" type="qreal"/>
+        <property name="containsMouse" type="bool"/>
+        <property name="pressed" type="bool"/>
+        <property name="enabled" type="bool"/>
+        <property name="pressedButtons" type="Qt.MouseButtons"/>
+        <property name="acceptedButtons" type="Qt.MouseButtons"/>
+        <property name="hoverEnabled" type="bool"/>
+        <property name="drag" type="Qt.Drag"/>
+        <signal name="hoveredChanged"/>
+        <signal name="pressedChanged"/>
+        <signal name="enabledChanged"/>
+        <signal name="acceptedButtonsChanged"/>
+        <signal name="positionChanged">
+            <param name="mouse" type="QDeclarativeMouseEvent"/>
+        </signal>
+        <signal name="pressed">
+            <param name="mouse" type="QDeclarativeMouseEvent"/>
+        </signal>
+        <signal name="pressAndHold">
+            <param name="mouse" type="QDeclarativeMouseEvent"/>
+        </signal>
+        <signal name="released">
+            <param name="mouse" type="QDeclarativeMouseEvent"/>
+        </signal>
+        <signal name="clicked">
+            <param name="mouse" type="QDeclarativeMouseEvent"/>
+        </signal>
+        <signal name="doubleClicked">
+            <param name="mouse" type="QDeclarativeMouseEvent"/>
+        </signal>
+        <signal name="entered"/>
+        <signal name="exited"/>
+    </type>
+    <type name="Qt.ParallelAnimation" version="4.6" extends="QDeclarativeAnimationGroup"/>
+    <type name="Qt.Item" version="4.6" extends="QGraphicsObject">
+        <enum name="TransformOrigin">
+            <enumerator name="TopLeft" value="0"/>
+            <enumerator name="Top" value="1"/>
+            <enumerator name="TopRight" value="2"/>
+            <enumerator name="Left" value="3"/>
+            <enumerator name="Center" value="4"/>
+            <enumerator name="Right" value="5"/>
+            <enumerator name="BottomLeft" value="6"/>
+            <enumerator name="Bottom" value="7"/>
+            <enumerator name="BottomRight" value="8"/>
+        </enum>
+        <property name="parent" type="Qt.Item"/>
+        <property name="data" type="Qt.QtObject" isList="true"/>
+        <property name="children" type="Qt.Item" isList="true"/>
+        <property name="resources" type="Qt.QtObject" isList="true"/>
+        <property name="states" type="Qt.State" isList="true"/>
+        <property name="transitions" type="Qt.Transition" isList="true"/>
+        <property name="state" type="string"/>
+        <property name="width" type="qreal"/>
+        <property name="height" type="qreal"/>
+        <property name="childrenRect" type="QRectF"/>
+        <property name="anchors" type="QDeclarativeAnchors"/>
+        <property name="left" type="QDeclarativeAnchorLine"/>
+        <property name="right" type="QDeclarativeAnchorLine"/>
+        <property name="horizontalCenter" type="QDeclarativeAnchorLine"/>
+        <property name="top" type="QDeclarativeAnchorLine"/>
+        <property name="bottom" type="QDeclarativeAnchorLine"/>
+        <property name="verticalCenter" type="QDeclarativeAnchorLine"/>
+        <property name="baseline" type="QDeclarativeAnchorLine"/>
+        <property name="baselineOffset" type="qreal"/>
+        <property name="clip" type="bool"/>
+        <property name="focus" type="bool"/>
+        <property name="wantsFocus" type="bool"/>
+        <property name="transform" type="QGraphicsTransform" isList="true"/>
+        <property name="transformOrigin" type="TransformOrigin"/>
+        <property name="smooth" type="bool"/>
+        <property name="effect" type="QGraphicsEffect"/>
+        <signal name="widthChanged"/>
+        <signal name="heightChanged"/>
+        <signal name="childrenChanged"/>
+        <signal name="childrenRectChanged"/>
+        <signal name="baselineOffsetChanged"/>
+        <signal name="stateChanged">
+            <param type="string"/>
+        </signal>
+        <signal name="focusChanged"/>
+        <signal name="wantsFocusChanged"/>
+        <signal name="parentChanged"/>
+        <signal name="transformOriginChanged">
+            <param type="TransformOrigin"/>
+        </signal>
+        <signal name="smoothChanged"/>
+        <signal name="clipChanged"/>
+    </type>
+    <type name="Qt.Vector3dAnimation" version="4.6" extends="Qt.PropertyAnimation">
+        <property name="from" type="QVector3D"/>
+        <property name="to" type="QVector3D"/>
+    </type>
+    <type name="Qt.PropertyChanges" version="4.6" extends="QDeclarativeStateOperation">
+        <property name="target" type="Qt.QtObject"/>
+        <property name="restoreEntryValues" type="bool"/>
+        <property name="explicit" type="bool"/>
+    </type>
+    <type name="Qt.ParentAction" version="4.6" extends="QDeclarativeAbstractAnimation">
+        <property name="target" type="Qt.Item"/>
+        <property name="parent" type="Qt.Item"/>
+    </type>
+    <type name="Qt.DateTimeFormatter" version="4.6" extends="Qt.QtObject">
+        <property name="dateText" type="string"/>
+        <property name="timeText" type="string"/>
+        <property name="dateTimeText" type="string"/>
+        <property name="date" type="QDate"/>
+        <property name="time" type="QTime"/>
+        <property name="dateTime" type="QDateTime"/>
+        <property name="dateFormat" type="string"/>
+        <property name="timeFormat" type="string"/>
+        <property name="dateTimeFormat" type="string"/>
+        <property name="longStyle" type="bool"/>
+        <signal name="textChanged"/>
+    </type>
+    <type name="Qt.Timer" version="4.6" extends="Qt.QtObject">
+        <property name="interval" type="int"/>
+        <property name="running" type="bool"/>
+        <property name="repeat" type="bool"/>
+        <property name="triggeredOnStart" type="bool"/>
+        <signal name="triggered"/>
+        <signal name="runningChanged"/>
+        <method name="start"/>
+        <method name="stop"/>
+        <method name="restart"/>
+    </type>
+    <type name="Qt.PathView" version="4.6" extends="Qt.Item">
+        <property name="model" type="QVariant"/>
+        <property name="path" type="Qt.Path"/>
+        <property name="currentIndex" type="int"/>
+        <property name="offset" type="qreal"/>
+        <property name="snapPosition" type="qreal"/>
+        <property name="dragMargin" type="qreal"/>
+        <property name="count" type="int"/>
+        <property name="delegate" type="Qt.Component"/>
+        <property name="pathItemCount" type="int"/>
+        <signal name="currentIndexChanged"/>
+        <signal name="offsetChanged"/>
+    </type>
+    <type name="Qt.Particles" version="4.6" extends="Qt.Item">
+        <property name="source" type="QUrl"/>
+        <property name="count" type="int"/>
+        <property name="emissionRate" type="int"/>
+        <property name="emissionVariance" type="qreal"/>
+        <property name="lifeSpan" type="int"/>
+        <property name="lifeSpanDeviation" type="int"/>
+        <property name="fadeInDuration" type="int"/>
+        <property name="fadeOutDuration" type="int"/>
+        <property name="angle" type="qreal"/>
+        <property name="angleDeviation" type="qreal"/>
+        <property name="velocity" type="qreal"/>
+        <property name="velocityDeviation" type="qreal"/>
+        <property name="motion" type="Qt.ParticleMotion"/>
+        <signal name="sourceChanged"/>
+        <signal name="countChanged"/>
+        <signal name="emissionRateChanged"/>
+        <signal name="emissionVarianceChanged"/>
+        <signal name="lifeSpanChanged"/>
+        <signal name="lifeSpanDeviationChanged"/>
+        <signal name="fadeInDurationChanged"/>
+        <signal name="fadeOutDurationChanged"/>
+        <signal name="angleChanged"/>
+        <signal name="angleDeviationChanged"/>
+        <signal name="velocityChanged"/>
+        <signal name="velocityDeviationChanged"/>
+        <signal name="emittingChanged"/>
+        <signal name="motionChanged"/>
+        <method name="burst">
+            <param name="count" type="int"/>
+            <param name="emissionRate" type="int"/>
+        </method>
+        <method name="burst">
+            <param name="count" type="int"/>
+        </method>
+    </type>
+    <type name="Qt.Grid" version="4.6" extends="QDeclarativeBasePositioner">
+        <property name="rows" type="int"/>
+        <property name="columns" type="int"/>
+        <signal name="rowsChanged"/>
+        <signal name="columnsChanged"/>
+    </type>
+    <type name="Qt.BorderImage" version="4.6" extends="QDeclarativeImageBase">
+        <enum name="TileMode">
+            <enumerator name="Stretch" value="0"/>
+            <enumerator name="Repeat" value="1"/>
+            <enumerator name="Round" value="2"/>
+        </enum>
+        <property name="border" type="QDeclarativeScaleGrid"/>
+        <property name="horizontalTileMode" type="TileMode"/>
+        <property name="verticalTileMode" type="TileMode"/>
+        <signal name="horizontalTileModeChanged"/>
+        <signal name="verticalTileModeChanged"/>
+    </type>
+    <type name="Qt.PathPercent" version="4.6" extends="QDeclarativePathElement">
+        <property name="value" type="qreal"/>
+    </type>
+    <type name="QDeclarativeAbstractAnimation" extends="Qt.QtObject">
+        <property name="running" type="bool"/>
+        <property name="paused" type="bool"/>
+        <property name="alwaysRunToEnd" type="bool"/>
+        <property name="repeat" type="bool"/>
+        <signal name="started"/>
+        <signal name="completed"/>
+        <signal name="runningChanged">
+            <param type="bool"/>
+        </signal>
+        <signal name="pausedChanged">
+            <param type="bool"/>
+        </signal>
+        <signal name="repeatChanged">
+            <param type="bool"/>
+        </signal>
+        <signal name="alwaysRunToEndChanged">
+            <param type="bool"/>
+        </signal>
+        <method name="restart"/>
+        <method name="start"/>
+        <method name="pause"/>
+        <method name="resume"/>
+        <method name="stop"/>
+        <method name="complete"/>
+    </type>
+    <type name="Qt.Text" version="4.6" extends="Qt.Item">
+        <enum name="HAlignment">
+            <enumerator name="AlignLeft" value="1"/>
+            <enumerator name="AlignRight" value="2"/>
+            <enumerator name="AlignHCenter" value="4"/>
+        </enum>
+        <enum name="VAlignment">
+            <enumerator name="AlignTop" value="32"/>
+            <enumerator name="AlignBottom" value="64"/>
+            <enumerator name="AlignVCenter" value="128"/>
+        </enum>
+        <enum name="TextStyle">
+            <enumerator name="Normal" value="0"/>
+            <enumerator name="Outline" value="1"/>
+            <enumerator name="Raised" value="2"/>
+            <enumerator name="Sunken" value="3"/>
+        </enum>
+        <enum name="TextFormat">
+            <enumerator name="PlainText" value="0"/>
+            <enumerator name="RichText" value="1"/>
+            <enumerator name="AutoText" value="2"/>
+            <enumerator name="StyledText" value="4"/>
+        </enum>
+        <enum name="TextElideMode">
+            <enumerator name="ElideLeft" value="0"/>
+            <enumerator name="ElideRight" value="1"/>
+            <enumerator name="ElideMiddle" value="2"/>
+            <enumerator name="ElideNone" value="3"/>
+        </enum>
+        <property name="text" type="string"/>
+        <property name="font" type="QFont"/>
+        <property name="color" type="QColor"/>
+        <property name="style" type="TextStyle"/>
+        <property name="styleColor" type="QColor"/>
+        <property name="horizontalAlignment" type="HAlignment"/>
+        <property name="verticalAlignment" type="VAlignment"/>
+        <property name="wrap" type="bool"/>
+        <property name="textFormat" type="TextFormat"/>
+        <property name="elide" type="TextElideMode"/>
+        <signal name="textChanged">
+            <param name="text" type="string"/>
+        </signal>
+        <signal name="linkActivated">
+            <param name="link" type="string"/>
+        </signal>
+        <signal name="fontChanged">
+            <param name="font" type="QFont"/>
+        </signal>
+        <signal name="colorChanged">
+            <param name="color" type="QColor"/>
+        </signal>
+        <signal name="styleChanged">
+            <param name="style" type="TextStyle"/>
+        </signal>
+        <signal name="styleColorChanged">
+            <param name="color" type="QColor"/>
+        </signal>
+        <signal name="horizontalAlignmentChanged">
+            <param name="alignment" type="HAlignment"/>
+        </signal>
+        <signal name="verticalAlignmentChanged">
+            <param name="alignment" type="VAlignment"/>
+        </signal>
+        <signal name="wrapChanged">
+            <param name="wrap" type="bool"/>
+        </signal>
+        <signal name="textFormatChanged">
+            <param name="textFormat" type="TextFormat"/>
+        </signal>
+        <signal name="elideModeChanged">
+            <param name="mode" type="TextElideMode"/>
+        </signal>
+    </type>
+    <type name="Qt.AnimatedImage" version="4.6" extends="Qt.Image">
+        <property name="playing" type="bool"/>
+        <property name="paused" type="bool"/>
+        <property name="currentFrame" type="int"/>
+        <property name="frameCount" type="int"/>
+        <signal name="playingChanged"/>
+        <signal name="pausedChanged"/>
+        <signal name="frameChanged"/>
+    </type>
+    <type name="Qt.ParticleMotion" version="4.6" extends="Qt.QtObject"/>
+    <type name="QDeclarativeCurve" extends="QDeclarativePathElement">
+        <property name="x" type="qreal"/>
+        <property name="y" type="qreal"/>
+    </type>
+    <type name="Qt.GraphicsObjectContainer" version="4.6" extends="Qt.Item">
+        <property name="graphicsObject" type="QGraphicsObject"/>
+        <property name="synchronizedResizing" type="bool"/>
+    </type>
+    <type name="QDeclarativeStateOperation" extends="Qt.QtObject"/>
+    <type name="Qt.ParentChange" version="4.6" extends="QDeclarativeStateOperation">
+        <property name="target" type="Qt.Item"/>
+        <property name="parent" type="Qt.Item"/>
+    </type>
+    <type name="Qt.Package" version="4.6" extends="Qt.QtObject">
+        <property name="data" type="Qt.QtObject" isList="true"/>
+    </type>
+    <type name="Qt.XmlRole" version="4.6" extends="Qt.QtObject">
+        <property name="name" type="string"/>
+        <property name="query" type="string"/>
+        <property name="isKey" type="bool"/>
+    </type>
+    <type name="Qt.EaseFollow" version="4.6" extends="Qt.QtObject">
+        <enum name="ReversingMode">
+            <enumerator name="Eased" value="0"/>
+            <enumerator name="Immediate" value="1"/>
+            <enumerator name="Sync" value="2"/>
+        </enum>
+        <property name="source" type="qreal"/>
+        <property name="velocity" type="qreal"/>
+        <property name="duration" type="qreal"/>
+        <property name="reversingMode" type="ReversingMode"/>
+        <property name="enabled" type="bool"/>
+        <property name="maximumEasingTime" type="qreal"/>
+        <signal name="sourceChanged"/>
+        <signal name="velocityChanged"/>
+        <signal name="durationChanged"/>
+        <signal name="reversingModeChanged"/>
+        <signal name="enabledChanged"/>
+        <signal name="maximumEasingTimeChanged"/>
+    </type>
+    <type name="Qt.ListModel" version="4.6" extends="QListModelInterface">
+        <property name="count" type="int"/>
+        <signal name="countChanged">
+            <param type="int"/>
+        </signal>
+        <method name="clear"/>
+        <method name="remove">
+            <param name="index" type="int"/>
+        </method>
+        <method name="append">
+            <param type="QScriptValue"/>
+        </method>
+        <method name="insert">
+            <param name="index" type="int"/>
+            <param type="QScriptValue"/>
+        </method>
+        <method name="get" type="QScriptValue">
+            <param name="index" type="int"/>
+        </method>
+        <method name="set">
+            <param name="index" type="int"/>
+            <param type="QScriptValue"/>
+        </method>
+        <method name="setProperty">
+            <param name="index" type="int"/>
+            <param name="property" type="string"/>
+            <param name="value" type="QVariant"/>
+        </method>
+        <method name="move">
+            <param name="from" type="int"/>
+            <param name="to" type="int"/>
+            <param name="count" type="int"/>
+        </method>
+    </type>
+    <type name="Qt.Pen" version="4.6" extends="Qt.QtObject">
+        <property name="width" type="int"/>
+        <property name="color" type="QColor"/>
+        <signal name="penChanged"/>
+    </type>
+    <type name="Qt.Rotation" version="4.6" extends="QGraphicsTransform">
+        <property name="origin" type="QVector3D"/>
+        <property name="angle" type="qreal"/>
+        <property name="axis" type="QVector3D"/>
+        <signal name="originChanged"/>
+        <signal name="angleChanged"/>
+        <signal name="axisChanged"/>
+    </type>
+    <type name="QDeclarativePaintedItem" extends="Qt.Item">
+        <property name="contentsSize" type="QSize"/>
+        <property name="fillColor" type="QColor"/>
+        <property name="pixelCacheSize" type="int"/>
+        <property name="smoothCache" type="bool"/>
+        <property name="contentsScale" type="qreal"/>
+        <signal name="fillColorChanged"/>
+        <signal name="contentsSizeChanged"/>
+        <signal name="contentsScaleChanged"/>
+    </type>
+    <type name="Qt.SpringFollow" version="4.6" extends="Qt.QtObject">
+        <property name="source" type="qreal"/>
+        <property name="velocity" type="qreal"/>
+        <property name="spring" type="qreal"/>
+        <property name="damping" type="qreal"/>
+        <property name="epsilon" type="qreal"/>
+        <property name="enabled" type="bool"/>
+        <property name="value" type="qreal"/>
+        <property name="modulus" type="qreal"/>
+        <property name="mass" type="qreal"/>
+        <property name="inSync" type="bool"/>
+        <signal name="valueChanged">
+            <param type="qreal"/>
+        </signal>
+        <signal name="modulusChanged"/>
+        <signal name="massChanged"/>
+        <signal name="syncChanged"/>
+    </type>
+    <type name="QDeclarativeVisualModel" extends="Qt.QtObject">
+        <property name="count" type="int"/>
+        <signal name="countChanged"/>
+        <signal name="itemsInserted">
+            <param name="index" type="int"/>
+            <param name="count" type="int"/>
+        </signal>
+        <signal name="itemsRemoved">
+            <param name="index" type="int"/>
+            <param name="count" type="int"/>
+        </signal>
+        <signal name="itemsMoved">
+            <param name="from" type="int"/>
+            <param name="to" type="int"/>
+            <param name="count" type="int"/>
+        </signal>
+        <signal name="createdItem">
+            <param name="index" type="int"/>
+            <param name="item" type="Qt.Item"/>
+        </signal>
+        <signal name="destroyingItem">
+            <param name="item" type="Qt.Item"/>
+        </signal>
+    </type>
+    <type name="QValidator" extends="Qt.QtObject"/>
+    <type name="Qt.Colorize" version="4.6" extends="QGraphicsEffect">
+        <property name="color" type="QColor"/>
+        <property name="strength" type="qreal"/>
+        <signal name="colorChanged">
+            <param name="color" type="QColor"/>
+        </signal>
+        <signal name="strengthChanged">
+            <param name="strength" type="qreal"/>
+        </signal>
+        <method name="setColor">
+            <param name="c" type="QColor"/>
+        </method>
+        <method name="setStrength">
+            <param name="strength" type="qreal"/>
+        </method>
+    </type>
+    <type name="Qt.Behavior" version="4.6" extends="Qt.QtObject">
+        <property name="animation" type="QDeclarativeAbstractAnimation"/>
+        <property name="enabled" type="bool"/>
+        <signal name="enabledChanged"/>
+    </type>
+</module>
diff --git a/share/qtcreator/static.pro b/share/qtcreator/static.pro
index 46db15fa93064df0cd193598f240701f1d6dd0a3..ddb9ac8f3d57850cf1040839b7c2c4a3b73eedf1 100644
--- a/share/qtcreator/static.pro
+++ b/share/qtcreator/static.pro
@@ -29,7 +29,8 @@ DATA_DIRS = \
     schemes \
     styles \
     gdbmacros \
-    qmldesigner
+    qmldesigner \
+    qml-type-descriptions
 
 !isEmpty(copydata) {
 
diff --git a/src/libs/qmljs/qmljs-lib.pri b/src/libs/qmljs/qmljs-lib.pri
index e79c071181c1acd970297c53a0b2307aae6232cf..e0057cae72d3aa854b9f4d80de91aa8ce08bd9f8 100644
--- a/src/libs/qmljs/qmljs-lib.pri
+++ b/src/libs/qmljs/qmljs-lib.pri
@@ -26,17 +26,10 @@ SOURCES += \
     $$PWD/qmljsdocument.cpp \
     $$PWD/qmljsscanner.cpp \
     $$PWD/qmljsinterpreter.cpp \
-    $$PWD/qmljsmetatypesystem.cpp \
     $$PWD/qmljslink.cpp \
     $$PWD/qmljscheck.cpp \
     $$PWD/qmljsscopebuilder.cpp
 
-contains(QT_CONFIG, declarative) {
-    QT += declarative
-} else {
-    DEFINES += NO_DECLARATIVE_BACKEND
-}
-
 contains(QT, gui) {
     SOURCES += $$PWD/qmljsindenter.cpp
     HEADERS += $$PWD/qmljsindenter.h
diff --git a/src/libs/qmljs/qmljsbind.cpp b/src/libs/qmljs/qmljsbind.cpp
index bdbf5e6fe47c28aa10737e3e940a4291483949cf..637bbb79613311fe06d773d038a201b314f53eb8 100644
--- a/src/libs/qmljs/qmljsbind.cpp
+++ b/src/libs/qmljs/qmljsbind.cpp
@@ -30,7 +30,6 @@
 #include "parser/qmljsast_p.h"
 #include "qmljsbind.h"
 #include "qmljsdocument.h"
-#include "qmljsmetatypesystem.h"
 
 #include <QtCore/QDir>
 #include <QtCore/QFileInfo>
diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp
index ab9e336719a68667ecb5d0e2ecad81ac48acb7cd..b866ab3ac4d7e403504b0039363d13ffbbb6f81f 100644
--- a/src/libs/qmljs/qmljscheck.cpp
+++ b/src/libs/qmljs/qmljscheck.cpp
@@ -38,10 +38,6 @@
 #include <QtGui/QColor>
 #include <QtGui/QApplication>
 
-#ifndef NO_DECLARATIVE_BACKEND
-#  include <QtDeclarative/private/qdeclarativestringconverters_p.h> // ### remove me
-#endif
-
 namespace QmlJS {
 namespace Messages {
 static const char *invalid_property_name =  QT_TRANSLATE_NOOP("QmlJS::Check", "'%1' is not a valid property name");
@@ -122,7 +118,6 @@ public:
         if (StringLiteral *stringLiteral = cast<StringLiteral *>(_ast)) {
             const QString curveName = stringLiteral->value->asString();
 
-            // ### update when easing changes hit master
             if (!EasingCurveNameValue::curveNames().contains(curveName)) {
                 _message.message = tr(Messages::unknown_easing_curve_name);
             }
@@ -139,12 +134,23 @@ public:
         if (StringLiteral *stringLiteral = cast<StringLiteral *>(_ast)) {
             const QString colorString = stringLiteral->value->asString();
 
-#ifndef NO_DECLARATIVE_BACKEND
-            bool ok = false;
-            QDeclarativeStringConverters::colorFromString(colorString, &ok);
+            bool ok = true;
+            if (colorString.size() == 9 && colorString.at(0) == QLatin1Char('#')) {
+                // #rgba
+                for (int i = 1; i < 9; ++i) {
+                    const QChar c = colorString.at(i);
+                    if (c >= QLatin1Char('0') && c <= QLatin1Char('9')
+                        || c >= QLatin1Char('a') && c <= QLatin1Char('f')
+                        || c >= QLatin1Char('A') && c <= QLatin1Char('F'))
+                        continue;
+                    ok = false;
+                    break;
+                }
+            } else {
+                ok = QColor(colorString).isValid();
+            }
             if (!ok)
                 _message.message = QCoreApplication::translate("QmlJS::Check", "not a valid color");
-#endif
         } else {
             visit((StringValue *)0);
         }
diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp
index c685af07208333351d9c8ebefe46c1c8e28451ce..cb0a81b0a45173090e8d6747e0f830584c2b7274 100644
--- a/src/libs/qmljs/qmljsinterpreter.cpp
+++ b/src/libs/qmljs/qmljsinterpreter.cpp
@@ -31,18 +31,15 @@
 #include "qmljsevaluate.h"
 #include "qmljslink.h"
 #include "parser/qmljsast_p.h"
+
+#include <QtCore/QFile>
+#include <QtCore/QString>
+#include <QtCore/QStringList>
 #include <QtCore/QMetaObject>
 #include <QtCore/QMetaProperty>
+#include <QtCore/QXmlStreamReader>
 #include <QtCore/QDebug>
 
-#ifndef NO_DECLARATIVE_BACKEND
-#  include <QtDeclarative/private/qdeclarativemetatype_p.h>
-#  include <QtDeclarative/private/qdeclarativeanchors_p.h> // ### remove me
-#  include <QtDeclarative/private/qdeclarativerectangle_p.h> // ### remove me
-#  include <QtDeclarative/private/qdeclarativevaluetype_p.h> // ### remove me
-#  include <QtDeclarative/private/qdeclarativeanimation_p.h> // ### remove me
-#endif
-
 using namespace QmlJS::Interpreter;
 using namespace QmlJS::AST;
 
@@ -100,16 +97,171 @@ public:
 
 } // end of anonymous namespace
 
-#ifndef NO_DECLARATIVE_BACKEND
+namespace QmlJS {
+namespace Interpreter {
+
+class FakeMetaEnum {
+    QString name;
+    QStringList keys;
+    QList<int> values;
+
+public:
+    FakeMetaEnum(const QString &name)
+        : name(name)
+    {}
+
+    void addKey(const QString &key, int value)
+    { keys.append(key); values.append(value); }
+
+    QString key(int index) const
+    { return keys.at(index); }
+
+    int keyCount() const
+    { return keys.size(); }
+};
+
+class FakeMetaMethod {
+public:
+    enum {
+        Signal,
+        Slot,
+        Method
+    };
+
+    enum {
+        Private,
+        Protected,
+        Public
+    };
+
+public:
+    FakeMetaMethod(const QString &name, const QString &returnType = QString())
+        : name(name), returnType(returnType)
+    {}
+
+    QString methodName() const
+    { return name; }
+
+    QStringList parameterNames() const
+    { return paramNames; }
+
+    QStringList parameterTypes() const
+    { return paramTypes; }
+
+    void addParameter(const QString &name, const QString &type)
+    { paramNames.append(name); paramTypes.append(type); }
+
+    int methodType() const
+    { return methodTy; }
+    void setMethodType(int methodType)
+    { methodTy = methodType; }
+
+    int access() const
+    { return methodAccess; }
+
+private:
+    QString name;
+    QString returnType;
+    QStringList paramNames;
+    QStringList paramTypes;
+    int methodTy;
+    int methodAccess;
+};
+
+class FakeMetaProperty {
+    QString propertyName;
+    QString type;
+    bool isList;
+
+public:
+    FakeMetaProperty(const QString &name, const QString &type, bool isList)
+        : propertyName(name), type(type), isList(isList)
+    {}
+
+    QString name() const
+    { return propertyName; }
+
+    QString typeName() const
+    { return type; }
+};
+
+class FakeMetaObject {
+    FakeMetaObject(FakeMetaObject&);
+    FakeMetaObject &operator=(const FakeMetaObject&);
+
+    QString name;
+    QString package;
+    int major;
+    int minor;
+    const FakeMetaObject *super;
+    QString superName;
+    QList<FakeMetaEnum> enums;
+    QList<FakeMetaProperty> props;
+    QList<FakeMetaMethod> methods;
+
+public:
+    FakeMetaObject(const QString &name, const QString &package, int major, int minor)
+        : name(name), package(package), major(major), minor(minor), super(0)
+    {}
+
+    void setSuperclassName(const QString &superclass)
+    { superName = superclass; }
+    QString superclassName() const
+    { return superName; }
+
+    void setSuperclass(FakeMetaObject *superClass)
+    { super = superClass; }
+    const FakeMetaObject *superClass() const
+    { return super; }
+    QString className() const
+    { return name; }
+    QString packageName() const
+    { return package; }
+
+    void addEnum(const FakeMetaEnum &fakeEnum)
+    { enums.append(fakeEnum); }
+    int enumeratorCount() const
+    { return enums.size(); }
+    int enumeratorOffset() const
+    { return 0; }
+    FakeMetaEnum enumerator(int index) const
+    { return enums.at(index); }
+
+    void addProperty(const FakeMetaProperty &property)
+    { props.append(property); }
+    int propertyCount() const
+    { return props.size(); }
+    int propertyOffset() const
+    { return 0; }
+    FakeMetaProperty property(int index) const
+    { return props.at(index); }
+
+    void addMethod(const FakeMetaMethod &method)
+    { methods.append(method); }
+    int methodCount() const
+    { return methods.size(); }
+    int methodOffset() const
+    { return 0; }
+    FakeMetaMethod method(int index) const
+    { return methods.at(index); }
+
+    int majorVersion() const
+    { return major; }
+    int minorVersion() const
+    { return minor; }
+};
+
+} // end of Interpreter namespace
+} // end of QmlJS namespace
 
 namespace {
 
 class MetaFunction: public FunctionValue
 {
-    QMetaMethod _method;
+    FakeMetaMethod _method;
 
 public:
-    MetaFunction(const QMetaMethod &method, Engine *engine)
+    MetaFunction(const FakeMetaMethod &method, Engine *engine)
         : FunctionValue(engine), _method(method)
     {
     }
@@ -148,35 +300,384 @@ public:
     }
 };
 
+class QmlXmlReader
+{
+public:
+    QmlXmlReader(QIODevice *dev)
+        : _xml(dev)
+    {}
+
+    bool operator()(QMap<QString, FakeMetaObject *> *objects) {
+        Q_ASSERT(objects);
+        _objects = objects;
+
+        if (_xml.readNextStartElement()) {
+            if (_xml.name() == "module")
+                readModule();
+            else
+                _xml.raiseError(QObject::tr("The file is not module file."));
+        }
+
+        return !_xml.error();
+    }
+
+    QString errorMessage() const {
+        return _xml.errorString();
+    }
+
+private:
+    void unexpectedElement(const QStringRef &child, const QString &parent) {
+        _xml.raiseError(QObject::tr("Unexpected element <%1> in <%2>").arg(child.toString(), parent));
+    }
+
+    void ignoreAttr(const QXmlStreamAttribute &attr) {
+        qDebug() << "** ignoring attribute" << attr.name().toString()
+                 << "in tag" << _xml.name();
+    }
+
+    void invalidAttr(const QString &value, const QString &attrName, const QString &tag) {
+        _xml.raiseError(QObject::tr("invalid value '%1' for attribute %2 in <%3>").arg(value, attrName, tag));
+    }
+
+    void noValidAttr(const QString &attrName, const QString &tag) {
+        _xml.raiseError(QObject::tr("<%1> has no valid %2 attribute").arg(tag, attrName));
+    }
+
+    void readModule()
+    {
+        Q_ASSERT(_xml.isStartElement() && _xml.name() == QLatin1String("module"));
+
+        foreach (const QXmlStreamAttribute &attr, _xml.attributes())
+            ignoreAttr(attr);
+
+        while (_xml.readNextStartElement()) {
+            if (_xml.name() == QLatin1String("type"))
+                readType();
+            else
+                unexpectedElement(_xml.name(), QLatin1String("module"));
+        }
+    }
+
+    void readType()
+    {
+        const QLatin1String tag("type");
+        Q_ASSERT(_xml.isStartElement() && _xml.name() == tag);
+
+        QString name;
+        int major = -1, minor = -1;
+        QString extends;
+        foreach (const QXmlStreamAttribute &attr, _xml.attributes()) {
+            if (attr.name() == QLatin1String("name")) {
+                name = attr.value().toString();
+                if (name.isEmpty()) {
+                    invalidAttr(name, QLatin1String("name"), tag);
+                    return;
+                }
+            } else if (attr.name() == QLatin1String("version")) {
+                QString version = attr.value().toString();
+                int dotIdx = version.indexOf('.');
+                if (dotIdx == -1) {
+                    bool ok = false;
+                    major = version.toInt(&ok);
+                    if (!ok) {
+                        invalidAttr(version, QLatin1String("version"), tag);
+                        return;
+                    }
+                    minor = -1;
+                } else {
+                    bool ok = false;
+                    major = version.left(dotIdx).toInt(&ok);
+                    if (!ok) {
+                        invalidAttr(version, QLatin1String("version"), tag);
+                        return;
+                    }
+                    minor = version.mid(dotIdx + 1).toInt(&ok);
+                    if (!ok) {
+                        invalidAttr(version, QLatin1String("version"), tag);
+                        return;
+                    }
+                }
+            } else if (attr.name() == QLatin1String("extends")) {
+                if (! attr.value().isEmpty())
+                    extends = attr.value().toString();
+            } else {
+                ignoreAttr(attr);
+            }
+        }
+
+        QString className, packageName;
+        split(name, &packageName, &className);
+        FakeMetaObject *metaObject = new FakeMetaObject(className, packageName,
+                                                        major, minor);
+        if (! extends.isEmpty())
+            metaObject->setSuperclassName(extends);
+
+        while (_xml.readNextStartElement()) {
+            if (_xml.name() == QLatin1String("property"))
+                readProperty(metaObject);
+            else if (_xml.name() == QLatin1String("enum"))
+                readEnum(metaObject);
+            else if (_xml.name() == QLatin1String("signal"))
+                readSignal(metaObject);
+            else if (_xml.name() == QLatin1String("method"))
+                readMethod(metaObject);
+            else
+                unexpectedElement(_xml.name(), tag);
+        }
+
+        _objects->insert(name, metaObject);
+    }
+
+    bool split(const QString &name, QString *packageName, QString *className) {
+        int dotIdx = name.indexOf(QLatin1Char('.'));
+        if (dotIdx != -1) {
+            if (packageName)
+                *packageName = name.left(dotIdx);
+            if (className)
+                *className = name.mid(dotIdx + 1);
+            return true;
+        } else {
+            if (packageName)
+                packageName->clear();
+            if (className)
+                *className = name;
+            return false;
+        }
+    }
+
+    void readProperty(FakeMetaObject *metaObject)
+    {
+        const QLatin1String tag("property");
+        Q_ASSERT(_xml.isStartElement() && _xml.name() == tag);
+
+        QString name, type;
+        bool isList = false;
+        foreach (const QXmlStreamAttribute &attr, _xml.attributes()) {
+            if (attr.name() == QLatin1String("name")) {
+                name = attr.value().toString();
+            } else if (attr.name() == QLatin1String("type")) {
+                type = attr.value().toString();
+            } else if (attr.name() == QLatin1String("isList")) {
+                if (attr.value() == QLatin1String("true")) {
+                    isList = true;
+                } else if (attr.value() == QLatin1String("false")) {
+                    isList = false;
+                } else {
+                    invalidAttr(attr.value().toString(), QLatin1String("idList"), tag);
+                    return;
+                }
+            } else {
+                ignoreAttr(attr);
+            }
+        }
+
+        if (name.isEmpty())
+            noValidAttr(QLatin1String("name"), tag);
+        else if (type.isEmpty())
+            noValidAttr(QLatin1String("type"), tag);
+        else
+            createProperty(metaObject, name, type, isList);
+
+        while (_xml.readNextStartElement()) {
+            unexpectedElement(_xml.name(), tag);
+        }
+    }
+
+    void createProperty(FakeMetaObject *metaObject, const QString &name,
+                        const QString &type, bool isList) {
+        Q_ASSERT(metaObject);
+
+        metaObject->addProperty(FakeMetaProperty(name, type, isList));
+    }
+
+    void readEnum(FakeMetaObject *metaObject)
+    {
+        Q_ASSERT(metaObject);
+
+        QLatin1String tag("enum");
+        Q_ASSERT(_xml.isStartElement() && _xml.name() == tag);
+
+        QString name;
+        foreach (const QXmlStreamAttribute &attr, _xml.attributes()) {
+            if (attr.name() == QLatin1String("name")) {
+                name = attr.value().toString();
+            } else {
+                ignoreAttr(attr);
+            }
+        }
+
+        if (name.isEmpty()) {
+            noValidAttr(QLatin1String("name"), tag);
+            return;
+        }
+
+        FakeMetaEnum metaEnum(name);
+        metaObject->addEnum(metaEnum);
+
+        while (_xml.readNextStartElement()) {
+            if (_xml.name() == QLatin1String("enumerator"))
+                readEnumerator(&metaEnum);
+            else
+                unexpectedElement(_xml.name(), tag);
+        }
+    }
+
+    void readEnumerator(FakeMetaEnum *metaEnum)
+    {
+        Q_ASSERT(metaEnum);
+
+        QLatin1String tag("enumerator");
+        Q_ASSERT(_xml.isStartElement() && _xml.name() == tag);
+
+        QString name;
+        int value = 0;
+        foreach (const QXmlStreamAttribute &attr, _xml.attributes()) {
+            if (attr.name() == QLatin1String("name")) {
+                name = attr.value().toString();
+            } else if (attr.name() == QLatin1String("value")) {
+                const QString valueStr = attr.value().toString();
+                bool ok = false;
+                value = valueStr.toInt(&ok);
+                if (!ok) {
+                    invalidAttr(valueStr, QLatin1String("value"), tag);
+                }
+            } else {
+                ignoreAttr(attr);
+            }
+        }
+
+        if (name.isEmpty())
+            noValidAttr(QLatin1String("name"), tag);
+        else
+            metaEnum->addKey(name, value);
+
+        while (_xml.readNextStartElement()) {
+            unexpectedElement(_xml.name(), tag);
+        }
+    }
+
+    void readSignal(FakeMetaObject *metaObject)
+    {
+        Q_ASSERT(metaObject);
+        QLatin1String tag("signal");
+        Q_ASSERT(_xml.isStartElement() && _xml.name() == tag);
+
+        QString name;
+        foreach (const QXmlStreamAttribute &attr, _xml.attributes()) {
+            if (attr.name() == QLatin1String("name")) {
+                name = attr.value().toString();
+            } else {
+                ignoreAttr(attr);
+            }
+        }
+
+        if (name.isEmpty()) {
+            noValidAttr(QLatin1String("name"), tag);
+            return;
+        }
+
+        FakeMetaMethod method(name);
+        method.setMethodType(FakeMetaMethod::Signal);
+
+        while (_xml.readNextStartElement()) {
+            if (_xml.name() == QLatin1String("param")) {
+                readParam(&method);
+            } else {
+                unexpectedElement(_xml.name(), tag);
+            }
+        }
+    }
+
+    void readParam(FakeMetaMethod *method)
+    {
+        Q_ASSERT(method);
+        QLatin1String tag("param");
+        Q_ASSERT(_xml.isStartElement() && _xml.name() == tag);
+
+        QString name, type;
+        foreach (const QXmlStreamAttribute &attr, _xml.attributes()) {
+            if (attr.name() == QLatin1String("name")) {
+                name = attr.value().toString();
+            } else if (attr.name() == QLatin1String("type")) {
+                type = attr.value().toString();
+            } else {
+                ignoreAttr(attr);
+            }
+        }
+
+        // note: name attribute is optional
+        if (type.isEmpty())
+            noValidAttr(QLatin1String("type"), tag);
+
+        method->addParameter(name, type);
+
+        while (_xml.readNextStartElement()) {
+            unexpectedElement(_xml.name(), tag);
+        }
+    }
+
+    void readMethod(FakeMetaObject *metaObject)
+    {
+        Q_ASSERT(metaObject);
+        QLatin1String tag("method");
+        Q_ASSERT(_xml.isStartElement() && _xml.name() == tag);
+
+        QString name, type;
+        foreach (const QXmlStreamAttribute &attr, _xml.attributes()) {
+            if (attr.name() == QLatin1String("name")) {
+                name = attr.value().toString();
+            } else if (attr.name() == QLatin1String("type")) {
+                type = attr.value().toString();
+            } else {
+                ignoreAttr(attr);
+            }
+        }
+
+        // note: type attribute is optional, in which case it's a void method.
+        if (name.isEmpty()) {
+            noValidAttr(QLatin1String("name"), tag);
+            return;
+        }
+
+        FakeMetaMethod method(name, type);
+        metaObject->addMethod(method);
+
+        while (_xml.readNextStartElement()) {
+            if (_xml.name() == QLatin1String("param")) {
+                readParam(&method);
+            } else {
+                unexpectedElement(_xml.name(), tag);
+            }
+        }
+    }
+
+private:
+    QXmlStreamReader _xml;
+    QMap<QString, FakeMetaObject *> *_objects;
+};
+
 } // end of anonymous namespace
 
-QmlObjectValue::QmlObjectValue(const QMetaObject *metaObject, const QString &qmlTypeName,
-                               int majorVersion, int minorVersion, Engine *engine)
+const int QmlObjectValue::NoVersion = -1;
+
+QmlObjectValue::QmlObjectValue(const FakeMetaObject *metaObject, Engine *engine)
     : ObjectValue(engine),
-      _metaObject(metaObject),
-      _qmlTypeName(qmlTypeName),
-      _majorVersion(majorVersion),
-      _minorVersion(minorVersion)
+      _metaObject(metaObject)
 {
-    setClassName(qmlTypeName); // ### TODO: we probably need to do more than just this...
+    setClassName(metaObject->className()); // ### TODO: we probably need to do more than just this...
 }
 
-QmlObjectValue::~QmlObjectValue() {}
+QmlObjectValue::~QmlObjectValue()
+{}
 
 const Value *QmlObjectValue::lookupMember(const QString &name, Context *context) const
 {
     return ObjectValue::lookupMember(name, context);
 }
 
-const Value *QmlObjectValue::findOrCreateSignature(int index, const QMetaMethod &method, QString *methodName) const
+const Value *QmlObjectValue::findOrCreateSignature(int index, const FakeMetaMethod &method, QString *methodName) const
 {
-    const QString signature = QString::fromUtf8(method.signature());
-
-    const int indexOfParen = signature.indexOf(QLatin1Char('('));
-    if (indexOfParen == -1)
-        return engine()->undefinedValue(); // skip it, invalid signature.
-
-    *methodName = signature.left(indexOfParen);
+    *methodName = method.methodName();
     const Value *value = _metaSignature.value(index);
     if (! value) {
         value = new MetaFunction(method, engine());
@@ -188,31 +689,31 @@ const Value *QmlObjectValue::findOrCreateSignature(int index, const QMetaMethod
 void QmlObjectValue::processMembers(MemberProcessor *processor) const
 {
     // process the meta enums
-    for (int index = _metaObject->enumeratorOffset(); index < _metaObject->propertyCount(); ++index) {
-        QMetaEnum e = _metaObject->enumerator(index);
+    for (int index = _metaObject->enumeratorOffset(); index < _metaObject->enumeratorCount(); ++index) {
+        FakeMetaEnum e = _metaObject->enumerator(index);
 
         for (int i = 0; i < e.keyCount(); ++i) {
-            processor->processEnumerator(QString::fromUtf8(e.key(i)), engine()->numberValue());
+            processor->processEnumerator(e.key(i), engine()->numberValue());
         }
     }
 
     // process the meta properties
     for (int index = 0; index < _metaObject->propertyCount(); ++index) {
-        QMetaProperty prop = _metaObject->property(index);
+        FakeMetaProperty prop = _metaObject->property(index);
 
         processor->processProperty(prop.name(), propertyValue(prop));
     }
 
     // process the meta methods
     for (int index = 0; index < _metaObject->methodCount(); ++index) {
-        QMetaMethod method = _metaObject->method(index);
+        FakeMetaMethod method = _metaObject->method(index);
         QString methodName;
         const Value *signature = findOrCreateSignature(index, method, &methodName);
 
-        if (method.methodType() == QMetaMethod::Slot && method.access() == QMetaMethod::Public) {
+        if (method.methodType() == FakeMetaMethod::Slot && method.access() == FakeMetaMethod::Public) {
             processor->processSlot(methodName, signature);
 
-        } else if (method.methodType() == QMetaMethod::Signal && method.access() != QMetaMethod::Private) {
+        } else if (method.methodType() == FakeMetaMethod::Signal && method.access() != FakeMetaMethod::Private) {
             // process the signal
             processor->processSignal(methodName, signature);
 
@@ -229,57 +730,34 @@ void QmlObjectValue::processMembers(MemberProcessor *processor) const
     ObjectValue::processMembers(processor);
 }
 
-const Value *QmlObjectValue::propertyValue(const QMetaProperty &prop) const
+const Value *QmlObjectValue::propertyValue(const FakeMetaProperty &prop) const
 {
-    if (QDeclarativeMetaType::isQObject(prop.userType())) {
-        QDeclarativeType *qmlPropertyType = QDeclarativeMetaType::qmlType(prop.userType());
-
-        if (qmlPropertyType && !qmlPropertyType->qmlTypeName().isEmpty()) {
-            QString typeName = qmlPropertyType->qmlTypeName();
-            int slashIdx = typeName.lastIndexOf(QLatin1Char('/'));
-            QString package;
-            if (slashIdx != -1) {
-                package = typeName.left(slashIdx);
-                typeName = typeName.mid(slashIdx + 1);
-            }
-
-            if (const ObjectValue *objectValue = engine()->newQmlObject(typeName, package, qmlPropertyType->majorVersion(), qmlPropertyType->minorVersion()))
-                return objectValue;
-        } else {
-            QString typeName = QString::fromUtf8(prop.typeName());
-
-            if (typeName.endsWith(QLatin1Char('*')))
-                typeName.truncate(typeName.length() - 1);
-
-            typeName.replace(QLatin1Char('.'), QLatin1Char('/'));
+    const QString typeName = prop.typeName();
 
-            if (const ObjectValue *objectValue = engine()->newQmlObject(typeName, "", -1, -1))  // ### we should extend this to lookup the property types in the QDeclarativeType object, instead of the QMetaProperty.
-                return objectValue;
-        }
-    }
+    // ### Verify type resolving.
+    QmlObjectValue *objectValue = engine()->metaTypeSystem().staticTypeForImport(typeName);
+    if (objectValue)
+        return objectValue;
 
     const Value *value = engine()->undefinedValue();
-
-    switch (prop.type()) {
-    case QMetaType::QByteArray:
-    case QMetaType::QString:
-    case QMetaType::QUrl:
+    if (typeName == QLatin1String("QByteArray")
+            || typeName == QLatin1String("string")
+            || typeName == QLatin1String("QString")
+            || typeName == QLatin1String("QUrl")) {
         value = engine()->stringValue();
-        break;
-
-    case QMetaType::Bool:
+    } else if (typeName == QLatin1String("bool")) {
         value = engine()->booleanValue();
-        break;
-
-    case QMetaType::Int:
-    case QMetaType::Float:
-    case QMetaType::Double:
+    } else if (typeName == QLatin1String("int")
+            || typeName == QLatin1String("float")
+            || typeName == QLatin1String("double")
+            || typeName == QLatin1String("qreal")
+            || typeName == QLatin1String("long")
+            // ### Review: more types here?
+            ) {
         value = engine()->numberValue();
-        break;
-
-    case QMetaType::QFont: {
-        // ### cache
+    } else if (typeName == QLatin1String("QFont")) {
         ObjectValue *object = engine()->newObject(/*prototype =*/ 0);
+        object->setClassName(QLatin1String("Font"));
         object->setProperty("family", engine()->stringValue());
         object->setProperty("weight", engine()->undefinedValue()); // ### make me an object
         object->setProperty("copitalization", engine()->undefinedValue()); // ### make me an object
@@ -293,69 +771,69 @@ const Value *QmlObjectValue::propertyValue(const QMetaProperty &prop) const
         object->setProperty("letterSpacing", engine()->numberValue());
         object->setProperty("wordSpacing", engine()->numberValue());
         value = object;
-    } break;
-
-    case QMetaType::QPoint:
-    case QMetaType::QPointF:
-    case QMetaType::QVector2D: {
+    } else if (typeName == QLatin1String("QPoint")
+            || typeName == QLatin1String("QPointF")
+            || typeName == QLatin1String("QVector2D")) {
         // ### cache
         ObjectValue *object = engine()->newObject(/*prototype =*/ 0);
+        object->setClassName(QLatin1String("Point"));
         object->setProperty("x", engine()->numberValue());
         object->setProperty("y", engine()->numberValue());
         value = object;
-    } break;
-
-    case QMetaType::QRect:
-    case QMetaType::QRectF: {
+    } else if (typeName == QLatin1String("QRect")
+            || typeName == QLatin1String("QRectF")) {
         // ### cache
         ObjectValue *object = engine()->newObject(/*prototype =*/ 0);
+        object->setClassName("Rect");
         object->setProperty("x", engine()->numberValue());
         object->setProperty("y", engine()->numberValue());
         object->setProperty("width", engine()->numberValue());
         object->setProperty("height", engine()->numberValue());
         value = object;
-    } break;
-
-    case QMetaType::QVector3D: {
+    } else if (typeName == QLatin1String("QVector3D")) {
         // ### cache
         ObjectValue *object = engine()->newObject(/*prototype =*/ 0);
+        object->setClassName(QLatin1String("Vector3D"));
         object->setProperty("x", engine()->numberValue());
         object->setProperty("y", engine()->numberValue());
         object->setProperty("z", engine()->numberValue());
         value = object;
-    } break;
-
-    case QMetaType::QColor: {
+    } else if (typeName == QLatin1String("QColor")) {
         value = engine()->colorValue();
-    } break;
-
-    default:
-        break;
-    } // end of switch
-
-    const QString typeName = prop.typeName();
-    if (typeName == QLatin1String("QDeclarativeAnchorLine")) {
+    } else if (typeName == QLatin1String("QDeclarativeAnchorLine")) {
         value = engine()->anchorLineValue();
-    }
-    if (value->asStringValue() && prop.name() == QLatin1String("easing")
-            && isDerivedFrom(&QDeclarativePropertyAnimation::staticMetaObject)) {
-        value = engine()->easingCurveNameValue();
+    } else if (typeName == QLatin1String("QEasingCurve")) {
+        // ### cache
+        ObjectValue *object = engine()->newObject(/*prototype =*/ 0);
+        object->setClassName(QLatin1String("EasingCurve"));
+        object->setProperty("type", engine()->easingCurveNameValue());
+        object->setProperty("period", engine()->numberValue());
+        object->setProperty("amplitude", engine()->numberValue());
+        object->setProperty("overshoot", engine()->numberValue());
+        value = object;
     }
 
     return value;
 }
 
-bool QmlObjectValue::isDerivedFrom(const QMetaObject *base) const
+QString QmlObjectValue::packageName() const
+{ return _metaObject->packageName(); }
+
+int QmlObjectValue::majorVersion() const
+{ return _metaObject->majorVersion(); }
+
+int QmlObjectValue::minorVersion() const
+{ return _metaObject->minorVersion(); }
+
+bool QmlObjectValue::isDerivedFrom(const FakeMetaObject *base) const
 {
-    for (const QMetaObject *iter = _metaObject; iter; iter = iter->superClass()) {
+    for (const FakeMetaObject *iter = _metaObject; iter; iter = iter->superClass()) {
         if (iter == base)
             return true;
     }
     return false;
 }
 
-#endif
-
 namespace {
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -945,47 +1423,47 @@ QSet<QString> EasingCurveNameValue::curveNames()
 {
     if (_curveNames.isEmpty()) {
         _curveNames = QSet<QString>()
-                      << "easeLinear"
-                      << "easeInQuad"
-                      << "easeOutQuad"
-                      << "easeInOutQuad"
-                      << "easeOutInQuad"
-                      << "easeInCubic"
-                      << "easeOutCubic"
-                      << "easeInOutCubic"
-                      << "easeOutInCubic"
-                      << "easeInQuart"
-                      << "easeOutQuart"
-                      << "easeInOutQuart"
-                      << "easeOutInQuart"
-                      << "easeInQuint"
-                      << "easeOutQuint"
-                      << "easeInOutQuint"
-                      << "easeOutInQuint"
-                      << "easeInSine"
-                      << "easeOutSine"
-                      << "easeInOutSine"
-                      << "easeOutInSine"
-                      << "easeInExpo"
-                      << "easeOutExpo"
-                      << "easeInOutExpo"
-                      << "easeOutInExpo"
-                      << "easeInCirc"
-                      << "easeOutCirc"
-                      << "easeInOutCirc"
-                      << "easeOutInCirc"
-                      << "easeInElastic"
-                      << "easeOutElastic"
-                      << "easeInOutElastic"
-                      << "easeOutInElastic"
-                      << "easeInBack"
-                      << "easeOutBack"
-                      << "easeInOutBack"
-                      << "easeOutInBack"
-                      << "easeInBounce"
-                      << "easeOutBounce"
-                      << "easeInOutBounce"
-                      << "easeOutInBounce";
+                      << "Linear"
+                      << "InQuad"
+                      << "OutQuad"
+                      << "InOutQuad"
+                      << "OutInQuad"
+                      << "InCubic"
+                      << "OutCubic"
+                      << "InOutCubic"
+                      << "OutInCubic"
+                      << "InQuart"
+                      << "OutQuart"
+                      << "InOutQuart"
+                      << "OutInQuart"
+                      << "InQuint"
+                      << "OutQuint"
+                      << "InOutQuint"
+                      << "OutInQuint"
+                      << "InSine"
+                      << "OutSine"
+                      << "InOutSine"
+                      << "OutInSine"
+                      << "InExpo"
+                      << "OutExpo"
+                      << "InOutExpo"
+                      << "OutInExpo"
+                      << "InCirc"
+                      << "OutCirc"
+                      << "InOutCirc"
+                      << "OutInCirc"
+                      << "InElastic"
+                      << "OutElastic"
+                      << "InOutElastic"
+                      << "OutInElastic"
+                      << "InBack"
+                      << "OutBack"
+                      << "InOutBack"
+                      << "OutInBack"
+                      << "InBounce"
+                      << "OutBounce"
+                      << "InOutBounce"
+                      << "OutInBounce";
     }
 
     return _curveNames;
@@ -1357,6 +1835,121 @@ const Value *Function::invoke(const Activation *activation) const
 ////////////////////////////////////////////////////////////////////////////////
 // typing environment
 ////////////////////////////////////////////////////////////////////////////////
+
+QList<const FakeMetaObject *> MetaTypeSystem::_metaObjects;
+
+QStringList MetaTypeSystem::load(const QFileInfoList &xmlFiles)
+{
+    QMap<QString, FakeMetaObject *> objects;
+
+    QStringList errorMsgs;
+
+    foreach (const QFileInfo &xmlFile, xmlFiles) {
+        QFile file(xmlFile.absoluteFilePath());
+        if (file.open(QIODevice::ReadOnly)) {
+            QmlXmlReader read(&file);
+            if (!read(&objects)) {
+                errorMsgs.append(read.errorMessage());
+            }
+            file.close();
+        } else {
+            errorMsgs.append(QObject::tr("%1: %2").arg(xmlFile.absoluteFilePath(),
+                                                       file.errorString()));
+        }
+    }
+
+    if (errorMsgs.isEmpty()) {
+        qDeleteAll(_metaObjects);
+        _metaObjects.clear();
+
+        foreach (FakeMetaObject *obj, objects.values()) {
+            const QString superName = obj->superclassName();
+            if (! superName.isEmpty()) {
+                obj->setSuperclass(objects.value(superName, 0));
+            }
+            _metaObjects.append(obj);
+        }
+    }
+
+    return errorMsgs;
+}
+
+void MetaTypeSystem::reload(Interpreter::Engine *interpreter)
+{
+    QHash<const FakeMetaObject *, QmlObjectValue *> qmlObjects;
+    _importedTypes.clear();
+
+    foreach (const FakeMetaObject *metaObject, _metaObjects) {
+        QmlObjectValue *objectValue = new QmlObjectValue(metaObject, interpreter);
+        qmlObjects.insert(metaObject, objectValue);
+        _importedTypes[metaObject->packageName()].append(objectValue);
+    }
+
+    foreach (const FakeMetaObject *metaObject, _metaObjects) {
+        QmlObjectValue *objectValue = qmlObjects.value(metaObject);
+        if (!objectValue)
+            continue;
+        objectValue->setPrototype(qmlObjects.value(metaObject->superClass(), 0));
+    }
+}
+
+QList<QmlObjectValue *> MetaTypeSystem::staticTypesForImport(const QString &packageName, int majorVersion, int minorVersion) const
+{
+    QMap<QString, QmlObjectValue *> objectValuesByName;
+
+    foreach (QmlObjectValue *qmlObjectValue, _importedTypes.value(packageName)) {
+        if (qmlObjectValue->majorVersion() < majorVersion ||
+            (qmlObjectValue->majorVersion() == majorVersion && qmlObjectValue->minorVersion() <= minorVersion)) {
+            // we got a candidate.
+            const QString typeName = qmlObjectValue->className();
+            QmlObjectValue *previousCandidate = objectValuesByName.value(typeName, 0);
+            if (previousCandidate) {
+                // check if our new candidate is newer than the one we found previously
+                if (qmlObjectValue->majorVersion() > previousCandidate->majorVersion() ||
+                    (qmlObjectValue->majorVersion() == previousCandidate->majorVersion() && qmlObjectValue->minorVersion() > previousCandidate->minorVersion())) {
+                    // the new candidate has a higher version no. than the one we found previously, so replace it
+                    objectValuesByName.insert(typeName, qmlObjectValue);
+                }
+            } else {
+                objectValuesByName.insert(typeName, qmlObjectValue);
+            }
+        }
+    }
+
+    return objectValuesByName.values();
+}
+
+QmlObjectValue *MetaTypeSystem::staticTypeForImport(const QString &qualifiedName) const
+{
+    QString name = qualifiedName;
+    QString packageName;
+    int dotIdx = name.indexOf(QLatin1Char('.'));
+    if (dotIdx != -1) {
+        packageName = name.left(dotIdx);
+        name = name.mid(dotIdx + 1);
+    }
+
+    QmlObjectValue *previousCandidate = 0;
+    foreach (QmlObjectValue *qmlObjectValue, _importedTypes.value(packageName)) {
+        const QString typeName = qmlObjectValue->className();
+        if (typeName != name)
+            continue;
+
+        if (previousCandidate) {
+            // check if our new candidate is newer than the one we found previously
+            if (qmlObjectValue->majorVersion() > previousCandidate->majorVersion() ||
+                (qmlObjectValue->majorVersion() == previousCandidate->majorVersion() && qmlObjectValue->minorVersion() > previousCandidate->minorVersion())) {
+                // the new candidate has a higher version no. than the one we found previously, so replace it
+                previousCandidate = qmlObjectValue;
+            }
+        } else {
+            previousCandidate = qmlObjectValue;
+        }
+    }
+
+    return previousCandidate;
+}
+
 ConvertToNumber::ConvertToNumber(Engine *engine)
     : _engine(engine), _result(0)
 {
@@ -1628,9 +2221,7 @@ Engine::Engine()
       _globalObject(0),
       _mathObject(0),
       _qtObject(0),
-#ifndef NO_DECLARATIVE_BACKEND
       _qmlKeysObject(0),
-#endif
       _convertToNumber(this),
       _convertToString(this),
       _convertToObject(this)
@@ -2132,11 +2723,7 @@ void Engine::initializePrototypes()
 
 const ObjectValue *Engine::qmlKeysObject()
 {
-#ifndef NO_DECLARATIVE_BACKEND
     return _qmlKeysObject;
-#else
-    return 0;
-#endif
 }
 
 const Value *Engine::defaultValueForBuiltinType(const QString &typeName) const
@@ -2152,40 +2739,6 @@ const Value *Engine::defaultValueForBuiltinType(const QString &typeName) const
     return undefinedValue();
 }
 
-#ifndef NO_DECLARATIVE_BACKEND
-QmlObjectValue *Engine::newQmlObject(const QString &name, const QString &prefix, int majorVersion, int minorVersion)
-{
-    if (name == QLatin1String("QDeclarativeAnchors")) {
-        QmlObjectValue *object = new QmlObjectValue(&QDeclarativeAnchors::staticMetaObject, QLatin1String("Anchors"), -1, -1, this);
-        return object;
-    } else if (name == QLatin1String("QDeclarativePen")) {
-        QmlObjectValue *object = new QmlObjectValue(&QDeclarativePen::staticMetaObject, QLatin1String("Pen"), -1, -1, this);
-        return object;
-    } else if (name == QLatin1String("QDeclarativeScaleGrid")) {
-        QmlObjectValue *object = new QmlObjectValue(&QObject::staticMetaObject, QLatin1String("ScaleGrid"), -1, -1, this);
-        object->setProperty("left", numberValue());
-        object->setProperty("top", numberValue());
-        object->setProperty("right", numberValue());
-        object->setProperty("bottom", numberValue());
-        return object;
-    }
-
-    // ### TODO: add support for QML packages
-    const QString componentName = prefix + QLatin1Char('/') + name;
-
-    if (QDeclarativeType *qmlType = QDeclarativeMetaType::qmlType(componentName.toUtf8(), majorVersion, minorVersion)) {
-        const QString typeName = qmlType->qmlTypeName();
-        const QString strippedTypeName = typeName.mid(typeName.lastIndexOf('/') + 1);
-        QmlObjectValue *object = new QmlObjectValue(qmlType->metaObject(), strippedTypeName, majorVersion, minorVersion, this);
-        return object;
-    }
-
-    return 0;
-}
-#endif
-
-
-
 ASTObjectValue::ASTObjectValue(UiQualifiedId *typeName,
                                UiObjectInitializer *initializer,
                                const QmlJS::Document *doc,
diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h
index 164e6094026fc67c3c39c89f2d9d455e8a41c388..e8ef1535e9afeab432d3abcc5ec95ed04c1e0402 100644
--- a/src/libs/qmljs/qmljsinterpreter.h
+++ b/src/libs/qmljs/qmljsinterpreter.h
@@ -32,9 +32,9 @@
 
 #include <qmljs/qmljsdocument.h>
 #include <qmljs/qmljs_global.h>
-#include <qmljs/qmljsmetatypesystem.h>
 #include <qmljs/parser/qmljsastfwd_p.h>
 
+#include <QtCore/QFileInfoList>
 #include <QtCore/QList>
 #include <QtCore/QString>
 #include <QtCore/QHash>
@@ -66,6 +66,10 @@ class AnchorLineValue;
 
 typedef QList<const Value *> ValueList;
 
+class FakeMetaObject;
+class FakeMetaMethod;
+class FakeMetaProperty;
+
 ////////////////////////////////////////////////////////////////////////////////
 // Value visitor
 ////////////////////////////////////////////////////////////////////////////////
@@ -396,41 +400,32 @@ private:
     QString _className;
 };
 
-#ifndef NO_DECLARATIVE_BACKEND
-
 class QmlObjectValue: public ObjectValue
 {
 public:
-    QmlObjectValue(const QMetaObject *metaObject, const QString &qmlTypeName, int majorVersion, int minorVersion, Engine *engine);
+    static const int NoVersion;
+
+public:
+    QmlObjectValue(const FakeMetaObject *metaObject, Engine *engine);
     virtual ~QmlObjectValue();
 
     virtual const Value *lookupMember(const QString &name, Context *context) const;
     virtual void processMembers(MemberProcessor *processor) const;
-    const Value *propertyValue(const QMetaProperty &prop) const;
+    const Value *propertyValue(const FakeMetaProperty &prop) const;
 
-    QString qmlTypeName() const
-    { return _qmlTypeName; }
-
-    int majorVersion() const
-    { return _majorVersion; }
-
-    int minorVersion() const
-    { return _minorVersion; }
+    QString packageName() const;
+    int majorVersion() const;
+    int minorVersion() const;
 
 protected:
-    const Value *findOrCreateSignature(int index, const QMetaMethod &method, QString *methodName) const;
-    bool isDerivedFrom(const QMetaObject *base) const;
+    const Value *findOrCreateSignature(int index, const FakeMetaMethod &method, QString *methodName) const;
+    bool isDerivedFrom(const FakeMetaObject *base) const;
 
 private:
-    const QMetaObject *_metaObject;
-    QString _qmlTypeName;
-    int _majorVersion;
-    int _minorVersion;
+    const FakeMetaObject *_metaObject;
     mutable QHash<int, const Value *> _metaSignature;
 };
 
-#endif // !NO_DECLARATIVE_BACKEND
-
 class QMLJS_EXPORT Activation
 {
 public:
@@ -518,6 +513,23 @@ private:
 // typing environment
 ////////////////////////////////////////////////////////////////////////////////
 
+class QMLJS_EXPORT MetaTypeSystem
+{
+    static QList<const FakeMetaObject *> _metaObjects;
+
+public:
+    /** \return an empty list when successful, error messages otherwise. */
+    static QStringList load(const QFileInfoList &xmlFiles);
+
+    void reload(Interpreter::Engine *interpreter);
+
+    QList<Interpreter::QmlObjectValue *> staticTypesForImport(const QString &prefix, int majorVersion, int minorVersion) const;
+    Interpreter::QmlObjectValue *staticTypeForImport(const QString &qualifiedName) const;
+
+private:
+    QHash<QString, QList<QmlObjectValue *> > _importedTypes;
+};
+
 class ConvertToNumber: protected ValueVisitor // ECMAScript ToInt()
 {
 public:
@@ -633,9 +645,6 @@ public:
     // QML objects
     const ObjectValue *qmlKeysObject();
     const Value *defaultValueForBuiltinType(const QString &typeName) const;
-#ifndef NO_DECLARATIVE_BACKEND
-    QmlObjectValue *newQmlObject(const QString &name, const QString &prefix, int majorVersion, int minorVersion);
-#endif
 
     // global object
     ObjectValue *globalObject() const;
@@ -703,9 +712,7 @@ private:
     ObjectValue *_globalObject;
     ObjectValue *_mathObject;
     ObjectValue *_qtObject;
-#ifndef NO_DECLARATIVE_BACKEND
     ObjectValue *_qmlKeysObject;
-#endif
 
     NullValue _nullValue;
     UndefinedValue _undefinedValue;
diff --git a/src/libs/qmljs/qmljslink.cpp b/src/libs/qmljs/qmljslink.cpp
index c94ad265e053120aefa25ba86e8373cf41e8ef62..35c9dab7f18899fdcf31f89ff6862790e96e36ee 100644
--- a/src/libs/qmljs/qmljslink.cpp
+++ b/src/libs/qmljs/qmljslink.cpp
@@ -254,8 +254,8 @@ void Link::importNonFile(Interpreter::ObjectValue *typeEnv, Document::Ptr doc, A
     // try the metaobject system
     if (import->importUri) {
         const QString package = Bind::toString(import->importUri, '/');
-        int majorVersion = -1; // ### TODO: Check these magic version numbers
-        int minorVersion = -1; // ### TODO: Check these magic version numbers
+        int majorVersion = QmlObjectValue::NoVersion;
+        int minorVersion = QmlObjectValue::NoVersion;
 
         if (import->versionToken.isValid()) {
             const QString versionString = doc->source().mid(import->versionToken.offset, import->versionToken.length);
@@ -269,11 +269,10 @@ void Link::importNonFile(Interpreter::ObjectValue *typeEnv, Document::Ptr doc, A
                 minorVersion = versionString.mid(dotIdx + 1).toInt();
             }
         }
-#ifndef NO_DECLARATIVE_BACKEND
+
         foreach (QmlObjectValue *object, engine()->metaTypeSystem().staticTypesForImport(package, majorVersion, minorVersion)) {
-            namespaceObject->setProperty(object->qmlTypeName(), object);
+            namespaceObject->setProperty(object->className(), object);
         }
-#endif // NO_DECLARATIVE_BACKEND
     }
 }
 
diff --git a/src/libs/qmljs/qmljsmetatypesystem.cpp b/src/libs/qmljs/qmljsmetatypesystem.cpp
deleted file mode 100644
index 9adfd42c42115549b0388f7953d14a95bd9c9c19..0000000000000000000000000000000000000000
--- a/src/libs/qmljs/qmljsmetatypesystem.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/**************************************************************************
-**
-** This file is part of Qt Creator
-**
-** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-**
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** Commercial Usage
-**
-** Licensees holding valid Qt Commercial licenses may use this file in
-** accordance with the Qt Commercial License Agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Nokia.
-**
-** GNU Lesser General Public License Usage
-**
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-**
-**************************************************************************/
-
-#include "qmljsinterpreter.h"
-#include "qmljsmetatypesystem.h"
-
-#ifndef NO_DECLARATIVE_BACKEND
-#include <QtDeclarative/private/qdeclarativemetatype_p.h>
-#endif // NO_DECLARATIVE_BACKEND
-
-using namespace QmlJS;
-using namespace QmlJS::Interpreter;
-
-void MetaTypeSystem::reload(Interpreter::Engine *interpreter)
-{
-    _importedTypes.clear();
-
-#ifndef NO_DECLARATIVE_BACKEND
-    foreach (QDeclarativeType *type, QDeclarativeMetaType::qmlTypes()) {
-        const QString fqType = type->qmlTypeName();
-        const int sepIdx = fqType.lastIndexOf(QLatin1Char('/'));
-        QString typeName;
-        QString package;
-        if (sepIdx == -1) {
-            typeName = fqType;
-        } else {
-            typeName = fqType.mid(sepIdx + 1);
-            package = fqType.left(sepIdx);
-        }
-
-        _importedTypes[package].append(interpreter->newQmlObject(typeName, package, type->majorVersion(), type->minorVersion()));
-    }
-}
-
-QList<QmlObjectValue *> MetaTypeSystem::staticTypesForImport(const QString &prefix, int majorVersion, int minorVersion) const
-{
-    QMap<QString, QmlObjectValue *> objectValuesByName;
-
-    foreach (QmlObjectValue *qmlObjectValue, _importedTypes.value(prefix)) {
-        if (qmlObjectValue->majorVersion() < majorVersion ||
-            (qmlObjectValue->majorVersion() == majorVersion && qmlObjectValue->minorVersion() <= minorVersion)) {
-            // we got a candidate.
-            const QString typeName = qmlObjectValue->qmlTypeName();
-            QmlObjectValue *previousCandidate = objectValuesByName.value(typeName, 0);
-            if (previousCandidate) {
-                // check if our new candidate is newer than the one we found previously
-                if (qmlObjectValue->majorVersion() > previousCandidate->majorVersion() ||
-                    (qmlObjectValue->majorVersion() == previousCandidate->majorVersion() && qmlObjectValue->minorVersion() > previousCandidate->minorVersion())) {
-                    // the new candidate has a higher version no. than the one we found previously, so replace it
-                    objectValuesByName.insert(typeName, qmlObjectValue);
-                }
-            } else {
-                objectValuesByName.insert(typeName, qmlObjectValue);
-            }
-        }
-    }
-
-    return objectValuesByName.values();
-#endif // NO_DECLARATIVE_BACKEND
-}
diff --git a/src/libs/qmljs/qmljsmetatypesystem.h b/src/libs/qmljs/qmljsmetatypesystem.h
deleted file mode 100644
index 8f96a56d457c47f5f397d8e04c83e15237adcbd9..0000000000000000000000000000000000000000
--- a/src/libs/qmljs/qmljsmetatypesystem.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/**************************************************************************
-**
-** This file is part of Qt Creator
-**
-** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-**
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** Commercial Usage
-**
-** Licensees holding valid Qt Commercial licenses may use this file in
-** accordance with the Qt Commercial License Agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Nokia.
-**
-** GNU Lesser General Public License Usage
-**
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-**
-**************************************************************************/
-
-#ifndef QMLJSMETATYPESYSTEM_H
-#define QMLJSMETATYPESYSTEM_H
-
-#include <QtCore/QHash>
-#include <QtCore/QString>
-
-namespace QmlJS {
-
-namespace Interpreter {
-    class Engine;
-    class QmlObjectValue;
-} // namespace Interpreter
-
-class MetaTypeSystem
-{
-public:
-    void reload(Interpreter::Engine *interpreter);
-
-#ifndef NO_DECLARATIVE_BACKEND
-    QList<Interpreter::QmlObjectValue *> staticTypesForImport(const QString &prefix, int majorVersion, int minorVersion) const;
-#endif // NO_DECLARATIVE_BACKEND
-
-private:
-    QHash<QString, QList<Interpreter::QmlObjectValue *> > _importedTypes;
-};
-
-} // namespace QmlJS
-
-#endif // QMLJSMETATYPESYSTEM_H
diff --git a/src/libs/qmljs/qmljsscopebuilder.cpp b/src/libs/qmljs/qmljsscopebuilder.cpp
index 9ab4381441f4b5ff93848edda3dbb475337db7b9..2ebd2a05ace5e3475b406260c935ecb6c79c4160 100644
--- a/src/libs/qmljs/qmljsscopebuilder.cpp
+++ b/src/libs/qmljs/qmljsscopebuilder.cpp
@@ -73,13 +73,12 @@ void ScopeBuilder::setQmlScopeObject(Node *node)
         return; // Probably syntax errors, where we're working with a "recovered" AST.
     }
 
-#ifndef NO_DECLARATIVE_BACKEND
     // check if the object has a Qt.ListElement ancestor
     const ObjectValue *prototype = scopeObject->prototype(_context);
     while (prototype) {
         if (const QmlObjectValue *qmlMetaObject = dynamic_cast<const QmlObjectValue *>(prototype)) {
-            // ### Also check for Qt package. Involves changes in QmlObjectValue.
-            if (qmlMetaObject->qmlTypeName() == QLatin1String("ListElement")) {
+            if (qmlMetaObject->className() == QLatin1String("ListElement")
+                    && qmlMetaObject->packageName() == QLatin1String("Qt")) {
                 scopeChain.qmlScopeObjects.clear();
                 break;
             }
@@ -91,8 +90,8 @@ void ScopeBuilder::setQmlScopeObject(Node *node)
     prototype = scopeObject->prototype(_context);
     while (prototype) {
         if (const QmlObjectValue *qmlMetaObject = dynamic_cast<const QmlObjectValue *>(prototype)) {
-            // ### Also check for Qt package. Involves changes in QmlObjectValue.
-            if (qmlMetaObject->qmlTypeName() == QLatin1String("PropertyChanges"))
+            if (qmlMetaObject->className() == QLatin1String("PropertyChanges")
+                    && qmlMetaObject->packageName() == QLatin1String("Qt"))
                 break;
         }
         prototype = prototype->prototype(_context);
@@ -126,5 +125,4 @@ void ScopeBuilder::setQmlScopeObject(Node *node)
             }
         }
     }
-#endif
 }
diff --git a/src/plugins/qmljseditor/qmljsmodelmanager.cpp b/src/plugins/qmljseditor/qmljsmodelmanager.cpp
index d4d553041d86139e37c7f0c41073151f4eebcd00..d6adf67347de9fc424b4e39046cbf8009bd563c3 100644
--- a/src/plugins/qmljseditor/qmljsmodelmanager.cpp
+++ b/src/plugins/qmljseditor/qmljsmodelmanager.cpp
@@ -35,14 +35,18 @@
 #include <coreplugin/editormanager/editormanager.h>
 #include <coreplugin/progressmanager/progressmanager.h>
 #include <coreplugin/mimedatabase.h>
+#include <qmljs/qmljsinterpreter.h>
 #include <texteditor/itexteditor.h>
 
+#include <QDir>
 #include <QFile>
 #include <QFileInfo>
 #include <QtConcurrentRun>
 #include <qtconcurrent/runextensions.h>
 #include <QTextStream>
 
+#include <QDebug>
+
 using namespace QmlJS;
 using namespace QmlJSEditor;
 using namespace QmlJSEditor::Internal;
@@ -57,6 +61,22 @@ ModelManager::ModelManager(QObject *parent):
 
     connect(this, SIGNAL(documentUpdated(QmlJS::Document::Ptr)),
             this, SLOT(onDocumentUpdated(QmlJS::Document::Ptr)));
+
+    loadQmlTypeDescriptions();
+}
+
+void ModelManager::loadQmlTypeDescriptions()
+{
+    const QString resourcePath = Core::ICore::instance()->resourcePath();
+    const QDir typeFileDir(resourcePath + QLatin1String("/qml-type-descriptions"));
+    const QStringList xmlExtensions = QStringList() << QLatin1String("*.xml");
+    const QFileInfoList xmlFiles = typeFileDir.entryInfoList(xmlExtensions,
+                                                             QDir::Files,
+                                                             QDir::Name);
+
+    const QStringList errors = Interpreter::MetaTypeSystem::load(xmlFiles);
+    foreach (const QString &error, errors)
+        qWarning() << qPrintable(error);
 }
 
 Snapshot ModelManager::snapshot() const
diff --git a/src/plugins/qmljseditor/qmljsmodelmanager.h b/src/plugins/qmljseditor/qmljsmodelmanager.h
index 47192044da9d5b93bd46d5b615502796e62df758..84ab2d6d0fdc0d2cffe0c8d07ed1b05790a82cf6 100644
--- a/src/plugins/qmljseditor/qmljsmodelmanager.h
+++ b/src/plugins/qmljseditor/qmljsmodelmanager.h
@@ -82,6 +82,8 @@ protected:
                       QStringList files,
                       ModelManager *modelManager);
 
+    void loadQmlTypeDescriptions();
+
 private:
     static bool matchesMimeType(const Core::MimeType &fileMimeType, const Core::MimeType &knownMimeType);